Re bonjour,
Voici une procédure complète qui permet de tester si le classeur a été modifié et de proposer l'enregistrement.
Si le classeur est le seul ouvert, Excel est fermé sinon le classeur est fermé et on repasse sur un des classeurs encore ouverts.
A placer au début du module ThisWorkbook
Option Explicit
Dim a$ ' Variable locale pour ce module
'
Puis alimenter la procédure :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If a$ = "Quitter" Then Exit Sub ' Empêche relance
' Fermeture du classeur par la croix
If ThisWorkbook.Saved = False Then ' Modif ? (=False si modif / =True aucune modif)
Select Case MsgBox("Enregistrer avant de Quitter ?", vbYesNoCancel, "Fermeture du classeur.")
Case 6
' Oui : Enregistre
ThisWorkbook.Save
If Application.Workbooks.Count = 1 Then ' Ferme Excel si 1 seul classeur ouvert
Application.Quit
Else
ThisWorkbook.Close ' Ferme et laisse Excel ouvert
End If
Case 7
' Non : Sort sans enregistrer
If Application.Workbooks.Count = 1 Then ' Seul classeur ouvert
Application.DisplayAlerts = False ' Pas de confirmation
Application.Quit ' Quitte (ferme le classeur)
Else
' Autre(s) classeur(s) ouvert(s)
' ** Problème si utilisation de Enableevents=false
a$ = "Quitter" ' Empêche la relance
Cancel = True
ThisWorkbook.Close savechanges:=False ' Ferme sans sauvegarde
End If
Case 2
' Abandon (ou fermeture par la croix du message)
Cancel = True
Exit Sub ' Retour au classeur
End Select
End If
End Sub
A tester et à modifier selon votre configuration.
Re bonne journée