Avertissement avant de quitter Excel
Bonjour,
J'ai la condition suivante qui s'exécute avant d'enregistrer
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Worksheets("Validation").Range("A1").Value > 0 Then
MsgBox "Vous n'avez pas complété tous les champs requis. Vous devez catégoriser chacun des titres d'emplois en veille ou requis et compléter la section d'identification."
Cancel = True
Else
Cancel = False
End If
End SubPar contre, si l'utilisateur clique sur le "x" pour quitter Excel, on lui demande d'enregistrer, s'il dit "Oui" même si ce message apparait, Excel se ferme et il perd ses données!
Est-ce que vous avez une solution à ce problème frustrant ?
Merci!
Bonjour Catherine,
Tu peux créer une macro Private Sub workbook_beforeclose et mettre le même code dedans.
Cdlt,
Bonsoir,
L'évènement ne comporte par tous ces paramètres, juste : Private Sub Workbook_BeforeClose(Cancel As Boolean)
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Worksheets("Validation").Range("A1").Value 0 Then
MsgBox "Vous n'avez pas complété tous les champs requis. Vous devez catégoriser chacun des titres d'emplois en veille ou requis et compléter la section d'identification."
Cancel = True
Else
Cancel = False
End If
End Sub@+
Désolé, j'aurais dû préciser mais en fait cette macro s'obtient sur le module thisworkbook en sélectionnant dans la liste en haut à gauche Workbook puis dans la liste en haut à droite beforeclose.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Worksheets("Validation").Range("A1").Value > 0 Then
Cancel = True
MsgBox "Vous n'avez pas complété tous les champs requis. Vous devez catégoriser chacun des titres d'emplois en veille ou requis et compléter la section d'identification."
End If
End SubEt il n'y a pas besoin du else car cancel est sur False d'office.
Edit : Salut BrunoM45
Cdlt,
Merci, ça fonctionne!
Je me demandais, est-ce qu'on peut personnaliser les bouton vbYes et vbNo au lieu que ce soit écrit Oui et Non
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim answer As Integer
answer = MsgBox("Voulez-vous quitter le fichier sans l'enregistrer ?", vbYesNo + vbQuestion, "Quitter")
If answer = vbYes Then
Cancel = False
ElseIf Worksheets("Validation").Range("A1").Value > 0 Then
MsgBox "Vous n'avez pas complété tous les champs requis avec des astérisques (*) rouges. Vous devez catégoriser chacun des titres d'emplois en veille ou requis et compléter la section d'identification avant d'enregistrer le fichier."
Cancel = True
End If
End SubDe plus, si je dis "Oui", il me repose la question suivante (voir l'image plus haut):
Pourquoi ?
Merci
Bonjour,
Oui, c'est possible mais je ne l'ai jamais fait. Voici un lien grâce auquel vous trouverez des éléments de réponse :
http://www.mdf-xlpages.com/modules/publisher/item.php?itemid=42
Pour éviter le message, essayez :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim answer As Integer
answer = MsgBox("Voulez-vous quitter le fichier sans l'enregistrer ?", vbYesNo + vbQuestion, "Quitter")
If not answer = vbYes Then
Cancel = True
Else
application.displayalerts = False
if Worksheets("Validation").Range("A1").Value > 0 Then
Cancel = True
MsgBox "Vous n'avez pas complété tous les champs requis avec des astérisques (*) rouges. Vous devez catégoriser chacun des titres d'emplois en veille ou requis et compléter la section d'identification avant d'enregistrer le fichier."
end if
End If
End SubIl faudra peut-être penser (je ne sais pas si c'est nécessaire mais ça ne coûte pas grand-chose) à avoir dans ce même module la macro suivante :
private sub workbook_open()
application.displayalerts = true
end subCdlt,
