Bonjour,
Les macros suivantes (à coller dans le module ThisWorkbook) font une copie de sécurité par jour (lors de la première ouverture de la journée...)
Private Sub Workbook_Open()
On Error Resume Next
Run "ZkVer"
'Autres instructions éventuelles...
End Sub
Private Sub ZkVer()
Dim Ext$, R$, Z$, S$, Y As Boolean
S = Day(Now) Mod 7
R = ActiveWorkbook.Name: Ext = Right(R, Len(R) - InStr(R, ".") + 1)
R = Left(R, InStr(R, ".") - 1)
Z = "D:SOS\" & R & S & Ext
Application.DisplayAlerts = False
If Len(Dir(Z)) = 0 Then
ActiveWorkbook.SaveCopyAs Z
Else
Y = CDate(Left(FileDateTime(Z), 10)) = Date
If Not Y Then ActiveWorkbook.SaveCopyAs Z
End If
Application.DisplayAlerts = Truee
End Sub
La macro crée une copie de sécurité dans le dossier indiqué (ici "D:SOS\") chemin que vous devrez ajuster en fonction de votre équipement. Il est recommandé de faire ces copies dans un dossier d'un autre disque que votre disque de travail habituel... (Et pas sur une clef USB... Hein !)
Si le classeur s'appelle "test.xlsm", aujourd'hui la copie sera "test0.xlsm"
Demain la copie sera "test1.xlsm". Et ainsi de suite jusqu'à "test6.xlsm"
Le huitième jour le nom sera à nouveau "test0.xlsm"
Nota : Le système étant basé sur le modulo de la date si vous n'ouvrez pas le classeur les samedi et les dimanche (parce que vous ne travaillez pas par exemple) il n'y aura jamais de "test2.xlsm" ni de "test3.xlsm", il y aura donc bien ainsi 5 copies qui seront écrasées chaque jour de la semaine suivante...
Nota2 : Si vous disposez d'un "perso.xlam" fonctionnel, vous pouvez supprimer la "Private Sub ZkVer()" de votre classeur et la mettre dans votre "perso.xlam" (dans un module standard (Module1...) en supprimant le mot "Private" bien sur...
Dans ce cas la macro sera disponible pour tous vos classeurs :
Il suffira alors d'ajouter :
On Error Resume Next
Run "ZkVer"
... Au début de la Private Sub Workbook_Open() de tous vos classeurs pour avoir une copie de sécurité de tous vos classeurs sur un autre disque dur...
A+