Faire une sauvegarde "renommée" d'un fichier

Résolu/Fermé
geo3701 Messages postés 58 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 8 août 2017 - 29 oct. 2014 à 15:07
geo3701 Messages postés 58 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 8 août 2017 - 12 nov. 2014 à 15:15
Bonjour,

J'aimerais que lorsque je lance une procédure, j'ais une macro qui me permette de sauvegarder mon fichier dans un autre dossier, sans renommer le fichier utilisé.

J'ai tenté avec un SaveAs, mais il me renomme le fichier utilisé.


ActiveWorkbook.SaveAs Filename:="nouveau chemin\nouveau nom de fichier.xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

Y a-t-il une autre solution?

Merci d'avance
A voir également:

6 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
29 oct. 2014 à 16:02
Bonjour Geo, bonsjour le forum,

Non il ne te renomme pas le fichier si tu veux pas !
Essaie comme ça :

Public Sub CopieFich()
Dim NC As String
NC = "C:\Ton_dossier\Ton_sous_dossier\" & ThisWorkbook.Name
ThisWorkbook.SaveAs (NC)
End Sub

0
geo3701 Messages postés 58 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 8 août 2017 1
29 oct. 2014 à 16:28
Je me suis mal exprimé.

Finalement, ce que je veux faire, c'est continuer à travailler avec ce fichier, mais avant de faire tourner mes macros, je veux en créer une copie, automatiquement, dans un dossier d'archive, et en changeant son nom, à savoir ajouter la date du jour...

Je ne sais pas si c'est plus clair comme ça?
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
30 oct. 2014 à 14:27
Bonjour Geo, bonjour le forum,

Code à placer dans le composant ThisWorkbook :

Private Sub Workbook_Open() 'à l'ouverture du classeur
Dim CH As String 'déclare la variable CH (CHemin d'accès)
Dim N As String 'déclare la variable N (Nom)
Dim D As String 'déclare la variable D (Date)
Dim NN As String 'déclare la variable NN (Nouveau Nom)
Dim CO As Workbook 'déclare la variable CO (Classeur Origine)
Dim NC As Workbook 'déclare la variable NC (Nouveau Classeur)

CH = "C\Archivage\" 'à adapter
N = Split(ThisWorkbook.Name, ".")(0) & "_" 'définit le nom N (le nom du classeur sans l'extention + underscore (_)
D = CStr(Day(Date)) & "_" & CStr(Month(Date) & "_" & CStr(Year(Date))) 'définit la date D (séparée par underscore (_))
NN = CH & N & D & ".xlsm" 'définit le nouveau nom NN avec le chemin complet
Set CO = ThisWorkbook 'définit le classeur d'origine CO
CO.SaveAs (NN) 'enregistre sous le classeur d'origine
Set NC = ActiveWorkbook 'définit le nouveau classeur NC
Workbooks.Open (NO) 'ouvre le classeur d'origine
NC.Close SaveChanges:=True 'ferme le nouveau classeur NC
End Sub

0
geo3701 Messages postés 58 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 8 août 2017 1
12 nov. 2014 à 11:08
Merci,

Tout se passe bien jusqu'à:
Workbooks.Open (NO) 'ouvre le classeur d'origine
"Erreur d'exécution '438':
Propriété ou méthode non gérée par cet objet".

J'ai changé "NO" par "CO", pensant que c'est une coquille, mais cela ne fonctionne pas non plus.

Dernier petit effort =D Sinon c'est parfait.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
12 nov. 2014 à 12:11
Bonjour Geo, bonjour le forum,

Voici le code modifié qui devrait convenir :

Private Sub Workbook_Open() 'à l'ouverture du classeur
Dim CO As Workbook 'déclare la variable CO (Classeur Origine)
Dim CH As String 'déclare la variable CH (CHemin d'accès)
Dim N As String 'déclare la variable N (Nom)
Dim D As String 'déclare la variable D (Date)
Dim NN As String 'déclare la variable NN (Nouveau Nom)

Set CO = ThisWorkbook 'définit le classeur d'origine CO
CH = "C\Archivage\" 'à adapter
N = Split(CO.Name, ".")(0) & "_" 'définit le nom N (le nom du classeur sans l'extention + underscore (_)
D = CStr(Day(Date)) & "_" & CStr(Month(Date) & "_" & CStr(Year(Date))) 'définit la date D (séparée par underscore (_))
NN = CH & N & D & ".xlsm" 'définit le nouveau nom NN avec le chemin complet
CO.SaveCopyAs (NN) 'enregistre une copie du classeur d'origine en gardant le classeur d'origine ouvert et sans ouvrir la copie
End Sub

0
geo3701 Messages postés 58 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 8 août 2017 1
12 nov. 2014 à 15:15
C'est parfait !!

Merci beaucoup
0