VBA Enregistrement Fichier

Bonjour à tous

J'ai assemblé ce code en plusieurs étapes.

Le code est dans Thisworkbook

En premier sauvegarde classique , Un bouton -> Msgbox Yes Non enregistrement Correct.

J'ai voulu mettre en plus la date heure et nom du fichier .

c'est là que ça ce complique , il ne fait que la première partie .

Ma question est Pourquoi

Sub Fermeture_Cliquer()

Dim Path As String, valeur As String

Path = ActiveWorkbook.Path & "C:\Users\dany\Desktop\RESERV NACELLE\Resevation Nacelle" 'Zone Stockage

valeur = "Reserva " & Format(Date, "dd-mmmm-yyyy") & "_" & Format(Time, "hh-mm") & ".xls" ' Nom Date Heure Format de fichier

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

ThisWorkbook.Save

Application.Quit

End Sub

Merci de votre aide

LedZep

Bonjour,

ça ce n,'est pas possible :

Path = ActiveWorkbook.Path & "C:\Users\dany\Desktop\RESERV NACELLE\Resevation Nacelle" 'Zone Stockage

Tu ne peux pas aller au delà du lecteur qui lui, est est la racine donc, "ActiveWorkbook.Path" ne peut pas se trouver avec "C:\...."

Bonjour LedZep,

Voici une proposition avec ce que j'ai compris de ta demande et de ton code :

Sub Fermeture_Cliquer()

    Dim sPath As String, sNomFichier As String
    Dim Reponse As Byte

    Reponse = MsgBox("Voulez-vous enregistrer les modifications ?", vbYesNo, "Demande de confirmation")
    If Reponse = vbNo Then Exit Sub 'on sort de la procédure si l'utilisateur a cliqué sur non

    sPath = "C:\Users\dany\Desktop\RESERV NACELLE\Resevation Nacelle\"    'Zone Stockage

    sNomFichier = "Reserva " & Format(Now, "dd-mmmm-yyyy_hh-mm") & ".xls"    ' Nom Date Heure Format de fichier

    ThisWorkbook.SaveAs sPath & sNomFichier, FileFormat:=56 'ne pas oublier de définir la propriété FileFormat. 56 = fichier xls

    ''Application.Quit
    ' Plutot que de fermer Excel, peut-etre que fermer le classeur suffit
    ThisWorkbook.Close

End Sub

vba-new

Edit : bien vu Jean-Eric pour le fileformat qui est bien 56 et non 52. C'est corrigé merci

Bonjour vba-new et à tous

Merci de ta réponse.

J'ai collé ton code dans un nouveau fichier ( mis la zone de stockage à jour)

Il ne met pas la date du fichier en début de dossier du style 2018-05-12 repertoire.

J'ai utiliser des Msgbox pour faire le pas à pas mais pas trouvé la solution

J'ai mis le fichier en PJ

Merci de ton aide

LedZep

99repertoire.xlsm (17.06 Ko)

Bonjour à tous,

@ vba-new

FileFormat est égal à 56 et non à 52 si on enregistre en .xls (Excel 97-2003) à partir de Excel 2007-2016.

Cdlt.

Bonsoir Jean -Eric et à tous

Merci de ta réponse.

J'ai modifier selon ton conseil,

le fichier n’enregistre pas les modifications .... ( même avant la modif 56 au lieu de 52))

Il se déroule correctement sans bug

Une idée

Bonne soirée

LedZep

@Jean-Eric : Merci pour ta remarque. C'est corrigé dans le code plus haut.

@LedZep : J'avoue ne pas comprendre ce que tu veux... Le mieux est que tu nous expliques en termes non techniques ce que tu souhaites faire avec ton bouton. Mais on n'est pas loin. Si quelqu'un a mieux compris que moi, n'hésitez pas à proposer une solution ! Jean-Eric ?

Bonsoir à tous,

Ok j'ai mal formulé ma demande.

Donc voici ce qu j'aimerai:

Quand je clic sur fermeture le fichier s'enregistre avec confirmation

Yes = enregistrement du fichier avec pour intitulé : Année-Mois- Jour et Nom du fichier de départ. (format si possible)

No = Quitte sans enregistrement.

( Je cherche de mon coté (avec une autre méthode )aussi mais n'arrive pas à enregistrer mes modif)

Merci de votre aide

LedZep

Re,

Il y a encore des incertitudes !...

Cdlt.

Public Sub Fermeture_Cliquer()
Dim sPath As String, sFilename As String
Dim Reponse As VbMsgBoxResult

    Reponse = MsgBox("Voulez-vous enregistrer les modifications ?", vbYesNo, "Demande de confirmation")
    If Reponse = vbNo Then Exit Sub
    sPath = "C:\Users\PCHP\Desktop\ENG\"
    sFilename = "repertoire" & Format(Now, "_yyyymmdd_hh-mm") & ".xls"
    With ThisWorkbook
        .Save   'On enregistre ou pas le classeur actif ?
        .SaveAs Filename:=sPath & sFilename, FileFormat:=56
        .Close
    End With

End Sub

Bonsoir

Voici une modif que j'ai faite en PJ

Si cela peut aider

LedZep

Désolé pas vu le dernier message

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

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

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

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

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

Rechercher des sujets similaires à "vba enregistrement fichier"