XL 2013 Fermeture de fichiers avec private sub

phil75016

XLDnaute Junior
Bonjour
j'ai une macro qui crée des fichiers à partir d'un fichier modèle donc qui y met des données, les enregistre et les ferme. Les fichiers créés sont envoyés à des utilisateurs qui doivent compléter des données. A la fermeture de ces fichiers une macro à la fermeture vérifie que certaines données ont bien été remplies. Si des données manquent la macro alerte et demande à la personne si elle veut vraiment fermer le fichier sans avoir rempli ces données.
La macro est comme ceci :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Sheets(1).Cells(11, 4) = "" Or Sheets(1).Cells(11, 5) = "" Then
If MsgBox("ATTENTION : Vous n'avez pas renseigné la devise, êtes-vous certain(e) de vouloir fermer ce classeur ?", 36, "Confirmation") = vbNo Then
Cancel = True
End If
End If
End Sub
Mon problème est que lorsque je crée les fichiers, à chaque fois que la macro ferme le fichier, j'ai le message "ATTENTION : Vous n'avez pas renseigné la devise.....". Je voudrais que ma macro de création n'exécute pas la Private Sub Workbook_BeforeClose(Cancel As Boolean) lors de la création et de la fermeture des fichiers (il y en a + de 200!).
Ma macro de création est du genre :
sub creation()
....
....
ActiveWorkbook.SaveAs Filename:="c:\local\" & code & " - Dossier " & ANNEE_N, FileFormat:=xlOpenXMLWorkbookMacroEnabled
ActiveWorkbook.Close 'fermeture du fichier N
....
....
end sub

C'est au moment de l'exécution de ActiveWorkbook.Close que le message apparait.

Je ne sais pas si j'ai été clair??
Je vous remercie.
 

bof

XLDnaute Occasionnel
Bonjour,
Je ne sais pas si tu sauras interpréter suffisamment mes indications mais l'idée est là :
Dans ta macro
Private Sub Workbook_BeforeClose tu commences par tester si ton classeur programme est ouvert.
Si le classeur programme est ouvert on quitte sans vérification (Exit Sub)
Sinon ... suite du programme
Ok ?
 

phil75016

XLDnaute Junior
Bonjour,
Je ne sais pas si tu sauras interpréter suffisamment mes indications mais l'idée est là :
Dans ta macro
Private Sub Workbook_BeforeClose tu commences par tester si ton classeur programme est ouvert.
Si le classeur programme est ouvert on quitte sans vérification (Exit Sub)
Sinon ... suite du programme
Ok ?
Bonjour

Merci mais tu as vu juste, je ne sais pas interpréter ta réponse. J'ai cherché sur le net mais je ne sais toujours pas comment tester si mon classeur programme est ouvert!! Je te remercie de me dire quelle est l'instruction pour le faire.
 

bof

XLDnaute Occasionnel
Essaie d'abord :
VB:
sub creation()
....
Application.EnableEvents = False
    ActiveWorkbook.SaveAs Filename:="c:\local\" & code & " - Dossier " & ANNEE_N, FileFormat:=xlOpenXMLWorkbookMacroEnabled
    ActiveWorkbook.Close   'fermeture du fichier N
Application.EnableEvents = True
....
end sub

Et si ça ne marche pas... Donne moi le nom de ton classeur programme.
A+
 

phil75016

XLDnaute Junior
Essaie d'abord :
VB:
sub creation()
....
Application.EnableEvents = False
    ActiveWorkbook.SaveAs Filename:="c:\local\" & code & " - Dossier " & ANNEE_N, FileFormat:=xlOpenXMLWorkbookMacroEnabled
    ActiveWorkbook.Close   'fermeture du fichier N
Application.EnableEvents = True
....
end sub

Et si ça ne marche pas... Donne moi le nom de ton classeur programme.
A+

Bonjour

Je te remercie c'est ok, j'aurais dû y penser moi-même car je ne suis pas fortiche en VBA mais cela je connaissais!!!
 

Discussions similaires