Bonjour,
Je rencontre un problème particulièrement bloquant que je ne parviens pas à résoudre moi-même.
A la fermeture d'un fichier Excel, je prévois de faire des opérations de manière générique (de type inscrire une valeur, cacher des lignes, etc.) puis d'offrir le choix à l'utilisateur d'enregistrer ou non les modifications apportées (dans l’événement ThisWorkbook_BeforeClose)
Si celui-ci répond NON, je fais croire à Excel que la propriété .saved du classeur est vraie puis Exit Sub.
Si celui-ci répond OUI, je prévois de faire un certain nombre d'opérations (de type inscrire une valeur, cacher des lignes, etc.) et d'enregistrer, puis Exit Sub.
Si en manipulation, je ferme via la croix rouge d'Excel, le code s'exécute parfaitement bien (ThisWorkbook_beforeclose).
Si je passe par le UserForm, pour lequel j'ai créé un bouton "Quitter" avec l'instruction ThisWorkbook.Close, le code s'exécute (notamment le ThisWorkbook.save) mais n'enregistre pas le fichier (en répondant "oui" à la msgbox)
Des pistes ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Private Sub Workbook_BeforeClose(Cancel As Boolean) '1er type d'opération générique Sheets("Feuil1").Cells(1, 1) = "toto" Message = MsgBox("Je quitte. Enregistrer oui ou non ?", vbExclamation + vbYesNo) If Message = vbNo Then ThisWorkbook.Saved = True 'Il n'enregistrera pas mon "toto" mais j'en m'en fiche Exit Sub End If If Message = vbYes Then Sheets("Feuil1").Cells(1, 2) = "fin" ThisWorkbook.Save ThisWorkbook.Saved = True End If
Partager