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é

Bonjour Pierrot93


Oui le code de Fo_rum est impeccable

Je parlais du fait de remplacer le If/End if/ par un IIF

sauf erreur de ma part, ca ne fonctionne pas non?
(pour la gestion du click sur Annuler)

Code:
Sub test2()
Dim n As Byte
n = MsgBox("ATTENTION, Voulez vous sauvegarder avant de quitter ?", vbYesNoCancel, "Modification")
Debug.Print n
[COLOR=Green]'oui =6,non=7,annuler=2
'donc un clic sur annuler ne pourra correspondre qu'à :
'7-6=1 donc SaveChanges:=true
'ou
'7-7=0 donc SaveChanges:=false
'mais comment faire autrement ?[/COLOR]
'ThisWorkbook.Close IIf(n > 2, 7 - n, 7)
[COLOR=Green]'ou[/COLOR]
'ThisWorkbook.Close IIf(n > 2, 7 - n, 6)
End Sub
 
Dernière édition:
Re : Msgbox à trois possibilité

Re

j'ai édité mon message précédent
IIF(Expression=true, Valeur si true, valeur si False)

Donc effectivement impasse , on ne peut pas vraiment annuler (juste fermer avec/sans enregistrement des modifications, ou alors pas de Cancel)

Code:
Sub test3()
Dim n As Byte, t$, m$
t = "Modification": m = "ATTENTION, Voulez vous sauvegarder avant de quitter ?"
n = MsgBox(m, 4, t)
ThisWorkbook.Close IIf(n = 6, 6, 7)
End Sub
ou sans le IIF
Code:
Sub test3a()
Dim n As Byte, t$, m$
t = "Modification": m = "ATTENTION, Voulez vous sauvegarder avant de quitter ?"
n = MsgBox(m, 4, t)
ThisWorkbook.Close (n = 6)
End Sub
 
Dernière édition:
Re : Msgbox à trois possibilité

Bonjour à tous,

Si l'un d'entre vous possède le manuel de John Walkenbach : VBA pour Excel 2003.
Page 624 et 625, est traité l'évènement BeforeClose du classeur, où l'on parle de contourner le message d'avertissement pour la sauvegarde ("Voulez-vous enregistrer ....) lors de la fermeture d'un classeur qui n'a pas été enregistré.

Ai-je bien compris ? 😎
S'agit-il de cela dont vous parler ?

Une petite recherche avec le mot BeforeClose ou BeforePrint sur le forum, pourrait nous aider finalement.

Klin89
 
Re : Msgbox à trois possibilité

Salut

Re
Donc effectivement impasse , on ne peut pas vraiment annuler (juste fermer avec/sans enregistrement des modifications, ou alors pas de Cancel)
...
simple explication (ou explication simple) :
Quel que soit xxx (nombre ou même mot), ThisWorkbook.Close xxx ferme le classeur !
Il faut donc traiter le cas "Annuler" à part !
 
- 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