J'ai bien trouvé des exemples sur le forum, mais mes tentatives pour adapter ces différents codes ont échoué.
Je voudrai éviter la fermeture du fichier par la petite croix en haut à droite pour fermer excel.
Donc quand je clique sur la croix, un msgbox m'invite à cliquer sur un shapes qui déclenche une macro qui enregistre et quitte excel . Et, c'est ce message qui me gène, il réapparait une seconde fois. je n'ai pas compris pourquoi. je vous remercie beaucoup.
Code dans thisworkbook:
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not flag Then Cancel = True
Sheets(1).Activate 'retour sur la feuille "tableau de bord'
MsgBox "Cliquez sur Sortie!", vbCritical
Exit Sub
End Sub
Code macro module standard:
Code:
Public flag As Boolean
Sub Sortie()
flag = True
Application.DisplayAlerts = False
With ThisWorkbook
.Save
If Workbooks.Count = 1 Then Application.Quit Else .Close
End With
End Sub
Je voudrai donc qu'en cliquant sur la croix, afficher message et retour sur la feuille "tableau de bord" où se trouve le shapes qui declenchera la macro de fermeture.
Je vous remercie beaucoup.
Re : fermeture fichier par macro, empecher fermeture par la croix
Bonsoir cathodique,
peut-être avec ce code:
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not flag Then
Cancel = True
Sheets(1).Activate 'retour sur la feuille "tableau de bord'
MsgBox "Cliquez sur Sortie!", vbCritical
End If
End Sub
Re : fermeture fichier par macro, empecher fermeture par la croix
Bonsoir mapomme,
Je te remercie beaucoup pour ton aide, ça fonctionne très bien. Et, je n'ai toujours pas compris pourquoi. En fait, tu as juste fait passer "Cancel=True" sur une nouvelle ligne.
Code:
'mon code
If Not flag Then Cancel = True
'ton code
If Not flag Then
Cancel = True
Pourrais-tu m'expliquer pourquoi, le fait de faire passer "cancel=true" à la ligne suivante ça fonctionne bien?
Donc tant qu'on n'a pas cliqué sur la forme "Sortie" (i.e. Flag à False), on exécute les trois instructions ci-dessus: on ne ferme pas le fichier (cancel = True), on sélectionne Sheets(1) et on affiche le message.
Si on a cliqué sur la forme "Sortie", Workbook_BeforeClose ne fait rien car Flag est à True et donc on autorise la fermeture du fichier sans afficher le message.
Ton code n'incluait que le "Cancel=True" dans le If. On affichait donc toujours le message quelque soit la méthode de fermeture du fichier (par la croix ou en cliquant sur la forme)
[Résolu] fermeture fichier par macro, empecher fermeture par la croix
Bonjour,
Je te remercie beaucoup pour tes explications très claires. Je savais que j'avais fait une erreur, mais vu mon niveau en VBA je ne suis pas parvenu à le déceler. Merci encore.
Cordialement,