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 Sub

j'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 Sub

Surtout n'oublie pas le "\" à la fin de ton chemin d’accès !

Pour 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 & Fichier1

j'aurai pu mettre :

ActiveWorkbook.SaveAs Filename:="C:\Users\toto\Documents\_toto\_Mon Suivi.xlsm

je 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

Rechercher des sujets similaires à "sauvegarde classeur differents endroits"