[VBA excel] beforeclose

Résolu
cs_Liro Messages postés 159 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 30 septembre 2011 - 28 oct. 2010 à 17:10
cs_Liro Messages postés 159 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 30 septembre 2011 - 29 oct. 2010 à 09:49
Bonjour,

Dans un fichier xla qui se charge au démarrage d'excel je créé un barre de menu (barre.Controls). Cette barre de menu est supprimée par un beforeclose lorsque l'utilisateur quitte excel.

Mon problème c'est que quand l'utilisateur clic sur la croix rouge pour fermer excel par erreur (au lieu de fermer juste le fichier par exemple) et que la msgbox apparaît en demandant s'il souhaite sauvegarder et qu'il clic sur annuler, excel annule la procédure de fermeture mais la barre d'outils à disparue.

Existe-t-il une parade?

Merci!

3 réponses

cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
29 oct. 2010 à 00:05
Bonjour

Je suppose que tu crées ta barre par quelque chose du genre Set menuBar = CommandBar.Add()

Si oui, tu peux rendre ta barre temporaire au moyen de la propriété temporary :
CommandBar.add(temporary:=True)

Dans ce cas, tu n'as plus besoin de gérer la suppression de la barre, c'est Excel qui s'en occupe.

Il y a peut-être une autre solution : supprimer la barre au niveau de la fonction OnClose() plutôt que BeforeClose().

Cordialement
3
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
28 oct. 2010 à 18:24
Bonjour,

J'ai trouvé ça : sur ce site

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  bUserClicCancel = ThisWorkbook.Saved
End Sub
 
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
  If bUserClicCancel Then
    MsgBox "Il a sauvé donc on traite..."
    Traitement
  Else
    MsgBox "Il a annulé, donc on ne traite pas..."
  End If
End Sub
 
Private Sub Traitement()
  MsgBox "Le traitement est lancé..."
End Sub



Ca devrait correspondre à tes besoins.

Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
cs_Liro Messages postés 159 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 30 septembre 2011
29 oct. 2010 à 09:49
Merci à vous deux pour vos réponses.

@Jordane: ta solution est particulière et ne convient pas à mon fichier mais j'apprécie ton aide!

@Orohena: C'est ce que je voulais faire, la propriété "temporary" était déjà à True il m'a juste suffit de supprimer la partie de code "delete" dans l'evènement BeforeClose!

Excellent c'est ce qu'il me fallait, merci!
0
Rejoignez-nous