Exécution partielle du code VBA sur instruction Workbook_BeforeClose
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)
Code:
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 |
Des pistes ?