Vba Enregistrement Fichier Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
ledzep
Membre fidèle
Membre fidèle
Messages : 168
Appréciations reçues : 2
Inscrit le : 15 août 2014
Version d'Excel : Office 365 et 2010

Message par ledzep » 13 mai 2018, 11:23

Bonjour à tous

J'ai continué mes recherches, pour l’instant l'enregistrement du fichier par " oui" MsgBox fonctionne correctement
J'ai même supprimer l'alerte pour l'enregistrement.

Mais un problème subsiste, il ne valide pas la sortie par "non" de la MsgBox sans enregistrement

Si une une personne à la solution

Merci de votre aide

LedZep
2018-05-13 repertoire v4 .xlsm
(17.86 Kio) Téléchargé 12 fois
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'020
Appréciations reçues : 305
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 13 mai 2018, 17:09

Bonjour,

Il suffit de fermer le classeur en demandant qu'il ne soit pas enregistrer :
Sub Fermeture_Cliquer()

    Dim Path As String, valeur As String
    Dim reponse As Byte
    
    Application.DisplayAlerts = False   ' supprime alerte sauvegarde

    If MsgBox("Voulez-vous enregistrer les modifications ?", vbYesNo, "Demande de confirmation") = vbNo Then
    
        ThisWorkbook.Close False
        Exit Sub     'on sort de la procédure si l'utilisateur a cliqué sur non
    
    End If
    
    Path = ActiveWorkbook.Path & "\"
    
    valeur = Format(Date, "yyyy-mm-dd") & " repertoire v4.xlsm"         ' Date,Nom fichier est format

    ThisWorkbook.SaveAs Path & valeur
     
     Application.DisplayAlerts = True   'Remet alerte sauvegarde
     
End Sub
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
Avatar du membre
ledzep
Membre fidèle
Membre fidèle
Messages : 168
Appréciations reçues : 2
Inscrit le : 15 août 2014
Version d'Excel : Office 365 et 2010

Message par ledzep » 13 mai 2018, 18:07

Bonjour à tous

Merci Theze pour ta réponse

Je débute et j'avais bien trouvé sur le net ce code mais je l'avais mal placé.

Maintenant j'ai compris mon erreur.

J'ai remarqué que tu as aussi corrigé

valeur = Format(Date, "yyyy-mm-dd") & " repertoire v4.xlsm"

Je pensais qu'il devait y avoir & " xlsm" encore une chose que j'ai appris.

Merci pour ton aide ainsi que tous les participants du post :)

Bonne fin de Week

LedZep
v
vba-new
Passionné d'Excel
Passionné d'Excel
Messages : 3'003
Appréciations reçues : 2
Inscrit le : 13 mai 2009
Version d'Excel : 2010 FR - 2013 FR

Message par vba-new » 14 mai 2018, 21:54

Bonsoir à tous,

En termes de best practices, ne pas oublier de spécifier la propriété FileFormat lors de l'enregistrement.
Au risque de se retrouver avec un fichier illisible car le format réel du fichier ne correspond pas à son extension.

Et pas besoin du Exit Sub après le ThisworkBook.Close. Les lignes de codes qui suivent ne seront pas évaluées.

Le code mis à jour :
Sub Fermeture_Cliquer()

    Dim Path As String, valeur As String
    Dim reponse As Byte

    Application.DisplayAlerts = False   ' supprime alerte sauvegarde

    If MsgBox("Voulez-vous enregistrer les modifications ?", vbYesNo, "Demande de confirmation") = vbNo Then

        ThisWorkbook.Close False

    End If

    Path = ActiveWorkbook.Path & "\"

    valeur = Format(Date, "yyyy-mm-dd") & " repertoire v4.xlsm"         ' Date,Nom fichier est format

    ThisWorkbook.SaveAs Path & valeur, FileFormat:=52    '52 = xlOpenXMLWorkbookMacroEnabled = xlsm

    Application.DisplayAlerts = True   'Remet alerte sauvegarde

End Sub
:btres:
vba-new
Avatar du membre
ledzep
Membre fidèle
Membre fidèle
Messages : 168
Appréciations reçues : 2
Inscrit le : 15 août 2014
Version d'Excel : Office 365 et 2010

Message par ledzep » 15 mai 2018, 21:41

Bonsoir vba-new

J'ai mis ton code à la place de celui-ci et ajouté
Application.Quit
Avant
Application.DisplayAlerts = True 'Remet alerte sauvegarde

J'ai bien compris la gestion du format, par contre ThisWorkbook.Close False ne ferme que le fichier, mais pas excel.

As tu une direction ; Solution à me donner pour que j'ai le même résultat que quand je fais oui, c'est à dire "Application.Quit



Sub Fermeture_Cliquer()
Dim Path As String, valeur As String, Reponse As String

    Application.DisplayAlerts = False    ' Supprime le message Excel "voulez vous enregistrer les modifications"

    Reponse = MsgBox("Voulez-vous enregistrer les modifications ?", vbYesNo, "Demande de confirmation")
    
     If Reponse = vbNo Then    'Si Réponse Non
            Exit Sub           'Sortie de procédure

        Else                   ' Sinon
        
            Path = ActiveWorkbook.Path & "\"
            valeur = Format(Date, "yyyy") & "  Reservation Nacelle" & ".xlsm"    ' Date, Nom du Fichier et Format
            ThisWorkbook.SaveAs Path & valeur                                           ' Sauvegarde
End If
   
    Application.Quit
    
    Application.DisplayAlerts = True    ' Réinitialise le message Excel "voulez vous enregistrer les modifications"
        
End Sub
Merci pour tes explications ce qui me permet de faire mon enrichissement

Bonne soirée

LedZep

désolé .Ce soir trop fatigué pour réfléchir
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message