msgbox beforeclose si l'utilisateur n'a pas cliqué sur un bouton

  • Initiateur de la discussion Initiateur de la discussion dilek
  • 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 !

dilek

XLDnaute Nouveau
Bonjour le forum,

Comment puis-je demander à l'utilisateur s'il veut enregistrer sa commande quand il clique sur la croix pour fermer, s'il ne l'a pas déjà fait grâce au bouton "enregistrer et imprimer" ?
Merci beaucoup
 
Re : msgbox beforeclose si l'utilisateur n'a pas cliqué sur un bouton

Bonjour Dilek, bonjour le forum,

Tout d'abord bienvenu parmi nous Dilek puisque c'est ton premier post. Je te propose la macro suivante :

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("Voulez-vous enregistrer votre commande ?", vbYesNo, "Attention !") = vbYes Then Cancel = True
'to code pour l'enregsitrement...
End Sub
 
Re : msgbox beforeclose si l'utilisateur n'a pas cliqué sur un bouton

Hello Robert 🙂, Dilek (lek 😀),

Peut-être comme ça plutôt non ? Puisqu'il veut que si l'utilisateur a déjà sauvegardé en cliquant un bouton, que ça quitte sans autre... Si j'ai bien compris 😀

A supposer que ton bouton se trouve sur la feuille1, essaye ce code dans le ThisWorkbook
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    If Sheets("Feuil1").Range("H3") = 1 Then
        Select Case MsgBox("Vous avez déjà enregistré ce classeur !" & Chr(13) & Chr(13) _
        & "Souhaitez-vous l'enregistrer à nouveau ?", vbYesNo + vbQuestion)
        Case vbYes
            ActiveWorkbook.Save
            [H3] = ""
        Case vbNo
            'Vide ici, comme ça il quitte sans autre si 1 en H3 !             
        End Select
    End If
    
End Sub

'ET

Private Sub Workbook_Open()

    Sheets("Feuil1").Range("H3") = ""

End Sub
et pour le code du bouton
Code:
Private Sub CommandButton1_Click()
        
    [H3] = 1
    ActiveWorkbook.Save
    'Suite de ton code

End Sub
Lorsque l'utilisateur clique sur le bouton, ça affiche 1 dans H3, si H3=1 Quand tu cliques sur la croix pour quitter -> MsgBox, si oui dans MsgBox il ré-enregistre, si non, il quitte sans autre !

J'ai choisis H3 par hasard... Faut masquer H3 sous le bouton 😀

Cdt, Hulk.


EDIT : Petite rectification du code au niveau du Case vbNo !

RE-EDIT : Si oui dans MsgBox, il affiche le message d'office de sauvegarde.
 
Dernière édition:
Re : msgbox beforeclose si l'utilisateur n'a pas cliqué sur un bouton

Bonsoir tout le monde,

on peut aussi tester thisworkbook.saved et ne proposer la boite que si il y a eu des modifs depuis le dernier enregistrement.

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
         If Not ThisWorkbook.Saved Then
                        ' boite dialogue
             End If
End Sub
EDIT : mais qcq chose doit m'échapper puisque excel le propose par défaut... on va dire que c'est l'heure ;-)
eric
 
Dernière édition:
Re : msgbox beforeclose si l'utilisateur n'a pas cliqué sur un bouton

Bonsoir le fil, bonsoir le forum,

Bon si j'ai bien compris, j'ai encore raté une occasion de me taire moi... Heureusement qu'Hulk (difficile à dire ça qu'Hulk...) et Eriiiiic (vous reconterez les i avec mon stabisme j'ai du mal... déjà que j'étais presbyte...), heureusement, disais-je, qu'Hulk et Ériiic veillent...
 
- 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

Retour