Sauvegarde automatique

bonsoir à tous,

peut-on faire une sauvegarde automatique d'un fichier excel, soit après chaque mise à jour, ou au pire 1 fois chaque soir

merci

je suis sous excel 2016 et windows 10

Bonjour,

A chaque modification dans une feuille. A mettre dans le module du classeur :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    ThisWorkbook.Save

End Sub

Toujours dan le module du classeur, enregistrement automatique à la fermeture du classeur :

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    ThisWorkbook.Save

End Sub

Sinon, pour un enregistrement par rapport à une heure, voir avec Application.OnTime

Bonjour,

Une simple sauvegarde (Save) ne sert à rien : si le dernier changement est une c... la sauvegarde va écraser toute possibilité de revenir en arrière...

Une saine pratique est de faire une copie (SaveCopy As) quotidienne -sous un autre nom- chaque jour AVANT toute modification (ce qui n'exclue pas une sauvegarde après...)

A+

merci pour vos réponses.

en fait je n'ai pas été assez précis !

mais le conseil de galopin répond à la question que j'ai mal formulée :

en fait je veux faire une sauvegarde sous un autre nom :

si mon fichier s'appelle "toto", je veux faire des sauvegardes avec "toto-copie" mais automatiquement

j'aurais toujours ma version d'origine "toto" et mes sauvegardes qui s'empileront :

  • "toto-copie (1)"
  • "toto-copie (2)" etc.
le must serait de faire ça une fois par jour et au bout de 5 sauvegardes revenir sur la1ere, puis sur la 2eme etc...

(on va sans doute me dire qu'il ne faut pas rêver !!!) et de plus ça n'a peut-être pas grand chose à voir avec excel !!!

merci

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+

merci à galopin01

je vais déjà essayer de comprendre ce que tu me proposes. mais la solution me plait beaucoup !

j'aurais sans doute des compléments d'informations

par exemple c'est quoi perso.xlam ?

merci encore !

Bonjour,

Visiblement c'est quelque chose que tu ne possèdes pas encore...

Le "Perso.xlam" n'est pas indispensable sauf si tu envisages de généraliser cela à tous tes classeurs.

Pour l'instant tu peux te contenter de copier les 2 macros indiquées dans les classeurs "cibles".

Le "Perso.xlam" est un classeur personnel de macros complémentaires. Il sert également à mettre à disposition de tous les classeurs des fonctions personnalisées...

Pour de plus amples informations sur ce sujet voir ici.

A+

merci !

Bonjour à tous,

Bonjour @galopin01,

Le code que tu proposes m'intéresse beaucoup. Cependant, je n'arrive pas à le faire fonctionner.

Si j'ai bien compris, la seule manipulation était copier le code dans ThisWorkbook et de modifier le répertoire de la sauvegarde, ce que j'ai fait. Mais au lancement du fichier, rien ne se passe.

Y a t-il autre chose à faire ?

Merci par avance

Cordialement

Bonjour,

Y a t-il autre chose à faire ?

Heu... Non !

A+

Merci galopin01 pour ta réponse... courte mais efficace

J'ai donc trouvé une "solution" : j'ai simplement mis la macro dans un module et j'ai changé son nom.

Bonne journée

Si tu n'utilises pas de perso.xlam tu n'as sans doute pas besoin du "run..."

A+

Rechercher des sujets similaires à "sauvegarde automatique"