Créer une copie de sauvegarde

Bonjour le forum,

Excel permet de créer une copie de sauvegarde d'un fichier, mais le fait que le nom de la copie commence par "Sauvegarde de..." fait que la sauvegarde se retrouve parfois éloignée ou avant l'original dans la liste des fichiers d'un dossier.

Y a-t-il un moyen grâce au VBA de créer une copie de sauvegarde du fichier toto.xls dont le nom serait toto (copie de sauvegarde).xls ?

Cerise sur le gâteau : ce serait cool si ces copies pouvaient être enregistrées dans un sous-dossier "SAUVEGARDE" pour ne pas encombrer le répertoire qui contient le fichier.

D'avance merci !

Bonjour gloub,

à tester,

Sub test()
ActiveWorkbook.SaveCopyAs "C:\Users\isabelle\Documents\SAUVEGARDE\" & ThisWorkbook.Name
End Sub

Bonjour,

Merci beaucoup pour ta réponse.

La base est bonne en effet.

Implémenté chez moi, ce code fonctionne :

Sub test()
ActiveWorkbook.SaveCopyAs "C:\Users\MOI\Desktop\SAUVEGARDES\" & ThisWorkbook.Name
End Sub

...mais il lui manque encore 2 choses pour être parfait :

1/ j'aimerais ajouter un suffixe au nom du fichier, comme par exemple " (copie de sauvegarde)

2/ j'aimerais que la macro se déclenche à la fermeture du fichier

As-tu une idée de la façon de procéder ?

Merci en tous cas.

re,

copie ce code sur la page ThisWorkbook

à tester,

Private Sub Workbook_BeforeClose(Cancel As Boolean)
wk = ActiveWorkbook.Name
LeNom = Left(wk, Len(wk) - 5) & "( copie de sauvegarde)" & ".xlsm"
ActiveWorkbook.SaveCopyAs "C:\Users\MOI\Desktop\SAUVEGARDES\" & LeNom
End Sub

Super !!!!

Moyennant de micro-adaptations, ça fonctionne parfaitement (notamment pq je suis un archaïque utilisateur d'Office 2003).

Private Sub Workbook_BeforeClose(Cancel As Boolean)
wk = ActiveWorkbook.Name
LeNom = Left(wk, Len(wk) - 4) & " (copie de sauvegarde)" & ".xls"
ActiveWorkbook.SaveCopyAs "C:\Users\MOI\Desktop\SAUVEGARDE\" & LeNom
End Sub

Merci !!!

L'appétit vient en mangeant, j'ai donc 2 requêtes supplémentaires si tu n'es pas lassée :

1/ si je veux insérer ce code dans plusieurs fichiers, je vais devoir adapter le code au nombre de caractères du nom du fichier.

Or il peut arriver que je rajoute un suffixe (par exemple un numéro de version) au nom du fichier.

Y a-t-il un moyen d'adapter le code pour que la macro fonctionne quelle que soit la longueur du nom de fichier ?

2/ j'aimerais généraliser ce code à un grand nombre de fichiers. Je compte créer un sous-dossier nommé "SAUVEGARDE" dans chaque dossier. Comment faire pour que la sauvegarde soit placée dans le sous-dossier "SAUVEGARDE" du dossier qui contient le fichier Excel, quel que soit le chemin complet ?

Re-merci.

1/ si je veux insérer ce code dans plusieurs fichiers, je vais devoir adapter le code au nombre de caractères du nom du fichier.

Or il peut arriver que je rajoute un suffixe (par exemple un numéro de version) au nom du fichier.

Y a-t-il un moyen d'adapter le code pour que la macro fonctionne quelle que soit la longueur du nom de fichier ?

2/ j'aimerais généraliser ce code à un grand nombre de fichiers. Je compte créer un sous-dossier nommé "SAUVEGARDE" dans chaque dossier. Comment faire pour que la sauvegarde soit placée dans le sous-dossier "SAUVEGARDE" du dossier qui contient le fichier Excel, quel que soit le chemin complet ?

1 -

ce n'est pas la longueur du nom du fichier qu'il faut prendre en compte mais la longueur de l’extension

nombre de caractère de l'extension .xls = 4 .xlsx = 5

wk = ActiveWorkbook.Name
extens = Mid(wk, InStrRev(wk, ".") + 1)
n = Len(extens) + 1

LeNom = Left(wk, Len(wk) - n) & " (copie de sauvegarde)" & "." & extens
ActiveWorkbook.SaveCopyAs "C:\Users\MOI\Desktop\SAUVEGARDE\" & LeNom

2 -

tu peux vérifier d'ou est issue le fichier par le code ActiveWorkbook.Path

et l'utiliser comme ça,

ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\SAUVEGARDE\" & LeNom
Rechercher des sujets similaires à "creer copie sauvegarde"