Problème Sauvegarde Fichier Excel
Bonjour à tous,
Je me permets de solliciter votre concernant cette procédure VBA destinée à sauvegarder une base de donnée dans un dossier ciblé.
Je m'explique plus en détails, cette procédure va chercher le fichier Excel "Database" (pour l'exemple) dans un dossier donné au préalable par une variante. Une fois, fichier Excel trouvé, celle-ci l'ouvre et l'enregistre sous dans un dossier sauvegarde (emplacement dans une variable).
La procédure marche bien mais elle est capricieuse notamment application.GetSaveAsFilename qui mets toujours ""Mes Documents" en fichier de sauvegarde et non le "Dossier de sauvegarde". Il ne prend pas en compte le chemin d'accès au dossier sauvegarde qui se trouve dans la variable "nouveau". Pourtant dans le pas à pas tout fonctionne bien, le chemin d'accès est bien prit en compte.
Pouvez-vous m'aider? je sais pas si je suis assez claire. Merci d'avance pour votre aide.
Public Sub save_backupdatabase() 'SOUS-PROCEDURE "BOUTON SAUVEGARDE" (SA)
'Déclaration des variables
Dim nouveau As Variant, cherche As String, fichier As String, chemin As String, textname As String, Snamesave As String, _
datesave As String, FIC_NAME2 As Variant
'Aquisition des variables
FIC_NAME2 = Worksheets("temparam").Range("A12") & "\"
DATABASENAME = Worksheets("temparam").Range("A4")
FEUILDATABASENAME = Worksheets("temparam").Range("A6")
NAMEZONEDATABASE = Worksheets("temparam").Range("A8")
srepertoire = Worksheets("temparam").Range("A10")
textname = "backup du"
datesave = Format(Now, "dd mm yy")
Snamesave = Left(DATABASENAME, 29) & " " & textname & " " & datesave
chemin = FIC_NAME2 ' à remplacer par ton répertoire
nouveau = srepertoire ' à remplacer par ton nouveau répertoire
cherche = DATABASENAME ' à remplacer par ton classeur
fichier = Dir(chemin) ' recherche premier
chdir (nouveau)
'Procédure de recherche dans le dossier où se trouve la base de données
Do
If fichier = cherche Then ' fichier trouvé
Workbooks.Open chemin & fichier ' fichier ouvert ' demande du nouveau nom
nouveau = application.GetSaveAsFilename(Snamesave, _
fileFilter:="Fichiers Excel (*.xlsm), *.xlsm", Title:="essai")
If nouveau <> False Then ' fichier saisi ?
ActiveWorkbook.SaveAs nouveau ' sauvegarde nouveau
MsgBox "Sauvegarde de la base de données sous " & nouveau ' message
ActiveWorkbook.Close ' fermeture
Else
MsgBox "Classeur non sauvegardé"
ActiveWorkbook.Close
End If
Exit Do ' sortie procédure
End If
fichier = Dir ' recherche fichier suivant
Loop
End SubBonjour,
Je ne vois pas très bien l'idée qui se cache derrière ce code, mais pour sauvegarder une copie d'un fichier, le plus simple est d'écrire en une ligne :
Shell "copy C:\test\x.xlsx C:\test\x-backup-1.xlsx"Bonjour,
Merci pour votre aide! Le code s’assure que le fichier se trouve bien à l’endroit indiquer par l’utilisateur. Une fois , trouvé, il l’ouvre et le sauvegarde-sous dans un autre dossier. Il crée une copie du fichier. Je vais essayé d’intégrer ta ligne de code dans ma procédure
Encore merci.
Bonjour.,
J’ai essayé d’intégré ta ligne de commande mais je n’arrive pas à la paramétrer avec mon code actuel.
Je rencontre le souci avec application.getsaveasfilename qui ne veut pas m’afficher le fichier que je lui donne pour la sauvegarde. Il y a t-il une alternative application.getsaveasfilename qui semble dans mon cas capricieuse.
Merci d’avance.