supprimer boite de dialogue lors de la fermeture fichier

supprimer boite de dialogue lors de la fermeture fichier - VB/VBA/VBS - Programmation

Marsh Posté le 04-05-2006 à 19:53:50    

Bonsoir
 
j'ai un souci:
j'ai "un grand nombre de fichiers" excel, quand je les ouvre (un seul, au hasard), et que je le referme, meme sans avoir touché a rien, j'ai une boite de dialogue genre "voulez vous enregistrer les modifs"..alors que j'ai toucher a rien...jusque la, ca va.
Le probleme c'est que j'ai une macro qui a besoin d'ouvrir ces 1000 et qqlqs fichiers, et résultat au lieu de travailler toute seule, la macro est stoppée par cette boite de dialogue...
Comment désactuver ceci ?
 
Merci

Reply

Marsh Posté le 04-05-2006 à 19:53:50   

Reply

Marsh Posté le 04-05-2006 à 19:58:18    

Salut pierre9393,
 
il existe ceci : Application.displayAlerts
Tu le place a False pour désactiver ce genre de fenetre mais il faut surtout ne pas oublier de le remttre a True ensuite.
 
Une autre sollution est d'ouvrir les fichiers en lecture seule si tu n'as rien à y écrire :)
@+

Reply

Marsh Posté le 04-05-2006 à 20:08:27    

ok ok merci bcp pour la réponse INSTANTANEE
 
par contre, petit souci, je connais quasiment rien en VB...
donc comment mettre Application.displayAlerts en mode False ?
quelle est la ligne de commande a taper ?
 
sinon pour la lecture seule j'ai mis tous les fichier dans ce mode (click droit, tick "lecture seule" ) mais rien n'y fait.. :-(

Reply

Marsh Posté le 04-05-2006 à 20:21:02    

Bon j'ai trouvé ceci...
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
 
ca devrait m'aider
 
je vais injecter ces lignes dans le script VB
si qqln peut me conseiller sur la localisation des lignes, histoire que le "remettage à true" ait bien lieu...
 
bonne soirée

Reply

Marsh Posté le 04-05-2006 à 20:30:26    

Voila, mon code est le suivant, ou dois-je insérer les balises, et quelles sont elles SVP ???
 
le nom du fichier contenant la macro s'appelle Anmois.xls
 
Sub Macro1()
' Visualiser et LANCER LA MACRO EN PAS a PAS (F8),
' et promener la souris sur les variables
' pour en voir le contenu, et modifier si nécessaire ...
' Mettre le bon chemin
Dim CheAn, Chemois, Fichxl, T_M(12) As String
Dim T_An(4), X, M, Lig As Integer
' Mise en place des noms dossiers An dans X postes
T_An(1) = 2003: T_An(2) = 2004: T_An(3) = 2005: T_An(4) = 2006
' Vous pouvez traiter An par an sur 4 feuilles et regrouper (copier/coller)
' les 4 feuilles en 1
' Tableau des dossiers Mois (juste l'élément qui varie)
T_M(1) = "01": T_M(2) = "02": T_M(3) = "03": T_M(4) = "04":
T_M(5) = "05": T_M(6) = "06": T_M(7) = "07": T_M(8) = "08":
T_M(9) = "09": T_M(10) = "10": T_M(11) = "11": T_M(12) = "12":
For X = 1 To 4      ' On boucle 4 fois pour 4 ans
   ' on charge le répertoire d'1 année T_An(X) dans la variable Chemxl
   CheAn = "E:\CD\Bilans_Journaliers_Choisy\" & T_An(X) & "\" & T_An(X) & "_"
   For M = 1 To 12    ' on va sur 12 dossiers Mois
   ' en pas à pas, on doit lire le chemin exact du dossier dans chemois
     Chemois = CheAn & T_M(M)
     ' la commande DIR met le nom du 1er .XLS du dossier chemois\... dans FichXL
     Fichxl = Dir(Chemois & "\*.XLS" )
     Do While Fichxl <> ""        ' si plus de fichier => fin
        Workbooks.Open Filename:= _
        Chemois & "\" & Fichxl
        '"C:\Documents and Settings\JPIERRE\Mes documents\Excel\LEVIER1.xls"
        'BK45, BL45, BM45
        Range("BK45:BM45" ).Select       ' on select/copy 3 cellules lig.45
        Selection.Copy
        Windows("Anmois.xls" ).Activate  ' on va sur l'XL central à la bonne ligne
        Lig = Lig + 1                   ' 1 ligne 12 cellules
        Range("A" & Lig).Select         ' Col A ligne Lig, chemin & fichier
        ActiveCell.Value = Chemois & "\" & Fichxl
        Range("B" & Lig).Select         ' Col B lig.45
        ActiveSheet.Paste
         
        Windows(Fichxl).Activate        ' on va copier la lig.46
        Range("BK46:BM46" ).Select
        Selection.Copy
        Windows("Anmois.xls" ).Activate  ' on va sur l'XL central Col E ligne Lig46
        Range("E" & Lig).Select
        ActiveSheet.Paste
 
        Windows(Fichxl).Activate        ' on va copier la lig.47
        Range("BK47:BM47" ).Select
        Selection.Copy
        Windows("Anmois.xls" ).Activate  ' on va sur l'XL central Col H ligne Lig47
        Range("H" & Lig).Select
        ActiveSheet.Paste
         
        Windows(Fichxl).Activate        ' on va copier la lig.48
        Range("BK48:BM48" ).Select
        Selection.Copy
        Windows("Anmois.xls" ).Activate  ' on va sur l'XL central Col H ligne Lig48
        Range("K" & Lig).Select
        ActiveSheet.Paste
         
        Windows(Fichxl).Activate        ' on revient sur le fcihier lu
        ActiveWorkbook.Close            ' pour le fermer
        Fichxl = Dir                    ' nom Fichier suivant
    Loop
    Next M
    ' Sauvegarde du tableau chaque fin de dossier mois
    ' Remplacer le chemin "C:\Documents and Settings\Anmois.xls" par le bon.
    ActiveWorkbook.SaveAs Filename:="E:\CD\Bilans_Journaliers_Choisy\Anmois.xls", _
    FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
    ReadOnlyRecommended:=False, CreateBackup:=False
Next X
' en pas à pas, on peut passer de la macro à la feuille et suivre le travail
' Quand tout va bien, F5 exécute sans pas à pas...
'
 
'
End Sub

Reply

Marsh Posté le 04-05-2006 à 20:48:02    

c bon j'ai trouvé, j'ai inséré de part et d'autre de ca:
----- false
ActiveWorkbook.Close
-----true

Reply

Marsh Posté le 05-05-2006 à 15:44:30    

C'est parfait comme ça ;) Tu peux améliorer ta macro en ne selectionant pas tout le temps. excel lit et écrit dans les cellules sans avoir besoin de les activer. Celà t'éviteras d'avoir la tête qui tourne à chaque fois que tu lance ta macro :)
@+

Reply

Marsh Posté le 05-05-2006 à 18:12:10    

Salut
bon, y a un petit souci, je pense que c'est du au fait que les cellules a recopier dans le fichier Anmois, ont été obtenues par formule, et le copier coller n'a pas été régler avec l'option "copier les valeurs uniquement".
Comment faire SVP ?
pourriez-vous corriger ma macro, donnée dans le post d'avant ?
Bon WE (de 3 jours :-)  )

Reply

Marsh Posté le 06-05-2006 à 16:34:19    

Salut pierre
 
Pour régler celà il te suffit de dire :
Range(3A1" ).value = Range("A2" ).value
Tu enlève donc carrément le copier coller :)
 
@+

Reply

Marsh Posté le 06-05-2006 à 20:44:01    

Heu merci beaucoup pour la réponse
je ne connais rien au VB, en fait la macro, je ne l'ai pas faite. Peux tu me donner la macro avec ta proposition stp ?
je suis désolé de t'embeter avec ca. C'est pour mon stage de fin d'études
salut, et bonne soirée

Reply

Marsh Posté le 06-05-2006 à 20:44:01   

Reply

Marsh Posté le 07-05-2006 à 09:22:16    

Salut Pierre
 
Je comprends qu'il soit important pour toi de bien réussir ton programme pour ton stage de fin d'études mais crois tu vraiement que ton stage te sera profitable si c'est moi qui rectifie toute ta macro ?
Moi aussi au début je ne comprennais rien au VBA, mais je m'y suis interessée parce que j'en avait besoin tout comme toi maintenant.
Si tu essayais dans un premier temps de trouver la fonction qui permet d'ouvrir un ficher en lecture seule pour que tu n'aies plus de demande d'enregistrement à la fermeture du fichier ?
Ensuite je regarderais ta macro.
@+

Reply

Marsh Posté le 07-05-2006 à 10:17:54    

pierre9393 a écrit :

Heu merci beaucoup pour la réponse
je ne connais rien au VB, en fait la macro, je ne l'ai pas faite. Peux tu me donner la macro avec ta proposition stp ?
je suis désolé de t'embeter avec ca. C'est pour mon stage de fin d'études
salut, et bonne soirée


Lis les règles : sur ce forum on aide mais on ne fait pas le boulot pour les autres. Internet n'a pas toujours existé, tu ferais comment si tu n'avais pas de net ? Crois tu que les étudiants des années 80-90 pouvaient utiliser Internet ? Et ça ne les a pas empéché d'avoir leur diplome...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 07-05-2006 à 10:56:33    

ok, merci, je vais me pencher sur ca de plus près.
Je vous tiendrai au courant
@ la prochaine

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed