Question avant de cliquer sur quitter Excel

Bonjour,
Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim answer As Integer

answer = MsgBox("Voulez-vous quitter le fichier ?", vbYesNo + vbQuestion, "Quitter")
If answer = vbYes And Worksheets("Validation").Range("G1").Value = 100 Then
 Cancel = False
ElseIf answer = vbYes And Worksheets("Validation").Range("G1").Value < 100 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 de quitter le fichier."
 Cancel = True
Else
Cancel = True
End If

End Sub

Si j'écris quelque chose dans un champ et que je l'efface, Excel me pose cette question :

Je ne veux pas qu'il me pose cette question, et qu'il quitte automatiquement car c'est vide et je lui ai répondu Oui de quitter pourquoi il me la pose deux fois.

Pouvez-vous m'aider ? Merci de votre collaboration!

capture

Bonjour,

Une proposition ?

Cdlt.

7catherine41.xlsm (15.34 Ko)
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim x As Double, Answer As VbMsgBoxResult, Message As String
    x = Me.Worksheets("Validation").Cells(7).Value
    Answer = MsgBox("Voulez-vous quitter le fichier ?", vbYesNo + vbQuestion, "Quitter")
    Select Case True
        Case Answer = vbYes And x = 100:
            If Me.Saved = False Then Me.Save
        Case Answer = vbYes And x < 100:
            Message = "Vous n'avez pas complété tous les champs requis avec des astérisques (*) rouges." & Chr(10)
            Message = Message & "Vous devez catégoriser chacun des titres d'emplois en veille" & Chr(10)
            Message = Message & "ou requis et compléter la sectiond'identification avant de quitter le fichier."
            MsgBox Message, 64, "Information"
            Cancel = True
        Case Else:
            Cancel = True
    End Select
End Sub

Bonjour Catherine41

Normal, pour Excel c'est quand même une modification

Pour éviter ça, tu peux ajouter

If answer = vbYes And Worksheets("Validation").Range("G1").Value = 100 Then
 Cancel = False
 ThisWorkbook.Save

Edit : Oups salut Jean-Eric

@+

Merci Jean-Éric, tu es un génie d'Excel

Est-ce qu'on peut mettre sur deux lignes ce MsgBox aussi:

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 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."
   Cancel = True
   Else
   Cancel = False
  End If
  End Sub

Re,

Essaie ainsi :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Message As String
    If Worksheets("Validation").Range("A1").Value > 0 Then
        Message = "Vous n'avez pas complété tous les champs requis avec des astérisques (*) rouges." & Chr(10)
        Message = Message & "Vous devez catégoriser chacun des titres d'emplois en veille ou requis et compléter la section d'identification."
        MsgBox Message, 64, "Information"
        Cancel = True
    End If
End Sub

Nota :

J'espère que nous serons pas importuné par notre modérateur !

Rechercher des sujets similaires à "question cliquer quitter"