Sauvegarde classeur dans différents endroits
Bonjour le forum,
J'essaye de sauvegarder par macro mon classeur dans 2 dossiers dont le 2eme avec un format date et heure
1° même chemin & même nom
2° autre chemin & autre nom
j'ai pas mal fouillé le net et j'ai trouvé et adapté quelques bout de code dont voici où j'en suis :
Sub Save_Classeur()
Dim Chemin As String, Fichier As String
Chemin1 = "C:\Users\toto\Documents\_toto"
Chemin2 = "C:\Users\toto\Documents\_toto\save"
Fichier1 = "_Mon Suivi.xlsm"
Fichier2 = "_Mon Suivi" & Format(Date, "ddmmyyyy") & " à " & Format(Time, "hhmmss") & ".xlsm"
' Ajoute la date du jour et l'heure dans le nom du fichier
ActiveWorkbook.SaveCopyAs Chemin1 & Fichier1 ' sauve dans le dossier _toto
ActiveWorkbook.SaveCopyAs Chemin2 & Fichier2 ' sauve dans le dossier _toto/save
End Subj'essaye avec les variables chemin1 et 2 et fichier1 et 2 en vain sans trouver la bonne syntaxe de Fichier2
je débute en vba
pourriez -vous m'aider en m'expliquant les bouts de codes que vous utilisez ?
Merci d'avance
Bonjour,
le bout de code permet d'enregistrer un copie du classeur actif.
Si j'ai bien compris tu veux sauvegarder le classeur en tant que "Mon suivit" et sauvegarder une copie de sauvegarde avec la date et l'heure. Moi j'effectuerai cela ainsi :
Sub Save_Classeur()
' Permet de dimensionner (ici au format Texte)
Dim Chemin1 As String, Fichier1 As String
Dim Chemin2 As String, Fichier2 As String
' Enregistrement 1
' ----------------
' Soit Pour un Enregistrement Sous utilise ce code
Chemin1 = "C:\Users\toto\Documents\_toto\"
Fichier1 = "_Mon Suivi.xlsm"
ActiveWorkbook.SaveAs Filename:=Chemin1 & Fichier1
' Soit pour un simple enregistrement
ActiveWorkbook.Save
' Copie 2
' -------
Chemin2 = "C:\Users\toto\Documents\_toto\save\"
Fichier2 = "_Mon Suivi " & Format(Date, "ddmmyyyy") & " à " & Format(Time, "hhmmss") & ".xlsm"
ActiveWorkbook.SaveCopyAs Chemin2 & Fichier2
End SubPour la première sauvegarde, j'ai pas très bien compris si tu voulais juste faire un enregistrement ou un enregistrement sous, je te propose donc les 2 codes.
Dis moi si j'ai pas bien compris ce que tu voulais ou si tu as d'autre questions,
RemBabar
Bonjour RemBabar, le forum,
Merci beaucoup c'est exactement ce que je cherchais, merci aussi pour les explications ça m'aide bien
pour résumer j'ai oublié de dimensionner Chemin2 et Fichier2, j'ignorais qu'il fallait terminer le chemin par un / mais ça parait logique d'en mettre un, et la différence entre .Save et .SaveCopyAs
au final j'ai peaufiné ceci pour la date et l'heure) :
Fichier2 = "_Mon Suivi " & Format(Date, "dd-mm-yy") & " à " & Format(Time, "hh-mm") & ".xlsm"
qui me parait plus lisible que ce que j'avais mis au début
et j'avais aussi un soucis dont j'ai oublié de parler, le code que j'avais un peu fait me faisait changer le nom du classeur actif une fois que j'avais effectué ma sauvegarde, je veux dire au dessus de la barre de menu j'avais le nom de mon classeur mais après la sauvegarde j'avais le nom de ma sauvegarde, ca doit surement être a cause de .Save et .SaveCopyAs
tu es d'accord ?
(je précise que là c'est tout bon ^^)
doit on obligatoirement dimensionner les variables Chemin1 et 2 et Fichier1 et 2 ? ou peut on s'en passer et le faire sans variable ?
dernière question j'ai surement activé l'option copy je ne sais plus trop où mais comment je peux si le cas se présentait récupérer un fichier avec l'extension .XLK ?
Cdlt,
Re,
je ne suis pas le meilleur sur VBA mais je vais essayer de répondre à tes questions
Pour le changement de nom, le code fait exactement la même chose que si tu avais l'action manuellement. Si tu fais un enregistrement sous et renomme le fichier, le nom change (saveas) de même avec le saveascopy.
Il est tout a fait possible de ne pas dimensionner les variables. Mais cela est conseillé, ça accélère et améliore le code et permet de moins faire d'erreur...
Pour ta dernière question, je ne sais pas du tout, je ne connais pas les fichiers " .XLK"
Si j'ai réussi a répondre à tes questions :
La meilleure chose pour apprendre le VBA est d'utiliser l'enregistreur de Macro qui donne un code pas toujours optimal mais facilement adaptable, et de nombreux site internet t'aideront !
Bonne continuation et bon courage,
RemBabar
Bonjour RemBabar, le forum,
ok merci beaucoup pour ton aide et ces infos
sinon pour les variables hier j'ai enclenché Option Explicit et après quelques tests j'ai compris ce que ca fait exactement et grâce a ça j'ai trouvé une erreur cachée dans une autre macro, donc ok pour dimensionner les variables mais est ce que dans mon code de sauvegarde j'étais obligé de mettre des variables car au lieu de :
ActiveWorkbook.SaveAs Filename:=Chemin1 & Fichier1j'aurai pu mettre :
ActiveWorkbook.SaveAs Filename:="C:\Users\toto\Documents\_toto\_Mon Suivi.xlsmje termine ma réponse et je mets en Résolu, je ne voyais pas comment faire car "accepter la réponse" ne me paraissait pas juste ^^
Merci pour tout
Bonjour,
l'option "Option Explicit" oblige l'utilisateur à dimensionner toute les variables, ce qui peut être utile pour prendre de bonnes habitudes
Pour tes 2 codes, ils sont totalement identiques, moi j'ai une préférence pour le premier avec les variables car je pense qu'il permet de changer plus facilement les chemins et noms de fichier si l'on souhaite enregistrer à un endroit différent !
En espérant t'avoir aider sur ton sujet et t'avoir donné envie de continuer avec le VBA !
RemBabar