Msgbox à trois possibilité

  • Initiateur de la discussion Initiateur de la discussion nikkyb
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

nikkyb

XLDnaute Junior
Bonjour voici un code :

Code:
Private Sub CommandButton7_Click()
If msgbox("ATTENTION, Voulez vous sauvegarder avant de quitter ?", vbYesNoCancel, "Modification") = vbYes Then
ThisWorkbook.Save
Unload Me
Application.Quit
If vbNo Then
Unload Me
Application.Quit
End If

If vbCancel Then Exit Sub
End If
End Sub

Avec celui ci je peut donc :
1 fermer avec enregistrement (ca marche)
2 annuler (ca marche)
3 fermer sans enregistrer (marche pas)

Et je ne sais pas pourquoi
Y a il une erreur dans mon code merci beaucoup!
 
Re : Msgbox à trois possibilité

Il s'agit en fait de la procédure pour fermer un classeur...
L'argument facultatif permet de répondre immédiatement à la question de l'enregistrement

Si tu précises dans une macro un :
Activeworksheet.close (1)
Il va fermer le classeur actif en enregistrant les modifications alors que Activeworksheet.close (0)
va fermer le classeur actif sans enregistrer les modifications.

Dans tous les cas, la msgbox d'Excel n'apparait pas.

Cela reste plus "propre" que de désactiver les messages d'alerte d'Excel car si un autre message que "Voulez-vous enregistrer blabla" doit apparaître, il ne pourra pas...
Un exemple : l'enregistrement du classeur des macros personnelles, des références circulaires, un calcul sur ordre à l'enregistrement qui plante...
 
Re : Msgbox à trois possibilité

Re

modifie ainsi :

Code:
Private Sub CommandButton1_Click()
Dim i As Integer
i = MsgBox("ATTENTION, Voulez vous sauvegarder avant de quitter ?", vbYesNoCancel, "Modification")
If i = vbYes Then
    ThisWorkbook.Save
    Unload Me
    Application.Quit
    ElseIf i = vbNo Then Unload Me: ThisWorkbook.Close False: _
        Application.Quit
    ElseIf i = vbCancel Then Exit Sub
End If
End Sub
 
Re : Msgbox à trois possibilité

Re

essaye ainsi :

Code:
Option Explicit
Private Sub CommandButton1_Click()
Dim i As Integer
i = MsgBox("ATTENTION, Voulez vous sauvegarder avant de quitter ?", vbYesNoCancel, "Modification")
If i = vbYes Then
    ThisWorkbook.Save
    Unload Me
    Application.Quit
    ElseIf i = vbNo Then Unload Me: ThisWorkbook.Saved = True:  Application.Quit
    ElseIf i = vbCancel Then Exit Sub
End If
End Sub

on va bien finir par y arriver... enfin j'espère...
 
Re : Msgbox à trois possibilité

Re,

oui, afin de leurrer le système, permet de le flaguer comme n'ayant pas été modifié depuis son dernier enregistrement, de ce fait pas de message d'alerte et pas d'enregistrement...

F1 sur le mot dans l'éditeur vba, te donnera plus d'infos...
 
Re : Msgbox à trois possibilité

Salut

et ainsi ?
Code:
Private Sub CommandButton1_Click()
  Dim n As Byte
  n = MsgBox("ATTENTION, Voulez vous sauvegarder avant de quitter ?", vbYesNoCancel, "Modification")
  If n > 2 Then ThisWorkbook.Close 7 - n
  Unload Me
End Sub
 
Re : Msgbox à trois possibilité

Bonsoir


Trés fin ton code Fo_rum 😉

J'ai voulu jouer au finaud avec ton code mais j'ai échoué 😱
pour ce qui est du bouton Annuler
Code:
Sub test()
Dim n As Byte
n = MsgBox("ATTENTION, Voulez vous sauvegarder avant de quitter ?", vbYesNoCancel, "Modification")
ThisWorkbook.Close IIf(n > 2, 7 - n, 7)
End Sub
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 MsgBox
Réponses
9
Affichages
607
Réponses
3
Affichages
589
Retour