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 : 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
Des pistes ?