Boite de dialogue perso Quitter + Enregistrer le fichier + Annuler

thom02

XLDnaute Junior
Bonjour, j’aimerais que lorsque je quitte mon fichier, une boite de dialogue s’ouvre pour me demander si j’ai bien enregistrer accompagnée de 3 choix.
Oui -> Quitter le fichier
Non -> Enregistrer le fichier selon
Annuler -> Retourner au document.
J’ai trouver comment faire mais en chipotant et je suis certain qu’il y a un code plus « propre » et plus court. De plus, quand je clic annuler la boite de dialogue apparaît à nouveau et je ne comprends pas pourquoi.
Merci pour votre aide.


' Message box lorsque l'on quitte
Sub QuitterDocument()

Dim Reponse As VbMsgBoxResult
Dim Cancel As Boolean
Reponse = MsgBox("Avez-Vous Bien Enregistré Votre Document?" & vbCrLf & "« Oui » Pour Quitter" & vbCrLf & "« Non » Pour Enregistrer", vbYesNoCancel + vbQuestion, "Boite d'Enregistrement")

'Procédure si click sur Oui
If Reponse = vbYes Then
ThisWorkbook.Close True

End If

If Reponse = vbNo Then 'Alors il faut enregistrer
ActiveWorkbook.SaveAs AdrEnregistr

End If
If Reponse = vbCancel Then
ThisWorkbook.Close False
End If

End Sub


'Commande qui permet d'enregistrer à la fermeture du document
Sub Workbook_BeforeClose(Cancel As Boolean)

Call QuitterDocument
'ThisWorkbook.Close False 'Annule l'enregistrement à la sortie

End Sub
 

thom02

XLDnaute Junior
Re : Boite de dialogue perso Quitter + Enregistrer le fichier + Annuler

Bonjour,
voici ton code remodelé
Code:
Sub test()
Dim NomDuFicher, Emplacement As String
NomDuFicher = Feuil7.Range("D4").Value
Emplacement = "c:\XXXXXX"
'AdrEnregistr = Application.GetSaveAsFilename(InitialFileName:=Emplacement & "_" & NomDuFicher, Filefilter:="Fichier Excel (*.xlsm), *.xlsm")
ActiveWorkbook.SaveAs Emplacement & "_" & NomDuFicher & ".xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub
A bientôt.:D

Merci.

Après recherche j'ai trouvé la solution pour le false.

Il suffisait de placer une condition au bon endroit... ***** qu'est ce que cela m'aura fait suer :)
Maintenant tout roule merci à tout le monde !!

Code:
 Enregistrement = Application.GetSaveAsFilename(Emplacement & NomduFichier, Filefilter:="Fichier Excel (*.xlsm), *.xlsm")
    
    ' Condition qui permet d'eviter le fichier "False"
    If Enregistrement <> "Faux" Then
    ActiveWorkbook.SaveAs Enregistrement
  
    Else
        Cancel = True       ' Retour au Classeur
    End If
 

Discussions similaires

Statistiques des forums

Discussions
314 779
Messages
2 112 871
Membres
111 689
dernier inscrit
momowell