Sub Workbook_BeforeClose s'exécute 2 fois !

  • Initiateur de la discussion Jean-Phi
  • Date de début
J

Jean-Phi

Guest
Ciao le forum !

Je souhaite fermer mon fichier Excel sans le sauvegarder. Le sujet a déjà été abordé dans de nombreux posts sur ce forum ; j'ai trouvé tout ce dont j'ai besoin (Thisworkbook.Close SaveChanges:=False, Private Sub Workbook_BeforeClose(Cancel As Boolean)
, ...) et j'ai une question :
Sur mon PC (Excell 2000), la macro ci-dessous semble s'exécuter bizarrement : le message 'ok' s'affiche 2 fois avant que le fichier ne se ferme ???...

Private Sub Workbook_BeforeClose(Cancel As Boolean)
MsgBox "ok"
ThisWorkbook.Close SaveChanges:=False
MsgBox "devrait etre ferme"
End Sub

L'explication que j'ai trouvée (et qui ne me convainc pas parce que n'expliquant pas tout) est la suivante :
au moment d'exécuter la commande ThisWorkbook.close, le programme exécute de nouveau la macro BeforeClose, ce qui expliquerait que 'ok' s'affiche 2 fois.
Mais alors à ce moment là, pourquoi SEULEMENT 2 fois ??... Pourquoi est-ce que le code s'arrète à la deuxième boucle ?

Je souhaite développer la macro BeforeClose, aussi, si quelqu'un a une idée de réponse, je suis preneur.


Cordialement,

Jean-Phi
 
A

arnaud

Guest
salut :),

ton explication est bien la bonne : tu ferme donc lance l'évènement et ds celui ci tu lui dis de fermer donc relance encore l'évènement.
pkoi il ne le fait pas en boucle je ne sai pas mais ou tout cas ton code lui n'est pas logique.

fais plutot un truc du style :


Dim BeforeClose As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)
BeforeClose = True
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If BeforeClose = True Then Cancel = True
BeforeClose = False
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 677
Messages
2 090 820
Membres
104 676
dernier inscrit
akram1619