Sauvegarde automatique à espace régulier
Bonjour le forum,
J'essaie de faire une macro pour pouvoir faire automatiquement à espace régulier (toutes les heures dès lors que mon fichier n'a pas été fermé ou sauvegardé avant ce délais) une sauvegarde de mon fichier de travail avec un nom du type date du jour et heure de la sauvegarde de secours.
En faisant la macro si-dessous le travail est partiellement rempli car :
- la sauvegarde ne se lance pas toutes les heures si le fichier est resté ouvert et/ou la dernière sauvegarde (manuelle) sont inférieur à ce délais ;
- dès que la macro est lancée je me retrouve dans mon fichier de sauvegarde et non plus dans le fichier principale ce qui est gênant.
J'espère que mes explications ne sont pas trop brouillon et que quelqu'un pourra m'apporter une solution ?
Sub sauvegarde_auto()
Dim sPath As String, sFilename As String
sPath = "C:\temp\"
sFilename = Format(Date, "yyyymmdd") & "_sauvegarde_de_secours" & ".xlsm"
'Sauvegarde de secours du fichier
ActiveWorkbook.SaveAs Filename:=sPath & sFilename
End SubA+
Bonjour,
Perso je ne suis pas fan de ça, trop risqué.
Il suffit qu'un objet tombe sur le clavier ou qq'un appuie dessus par mégarde quand tu n'es pas là et tu perds une valeur si tu sauvegardes en auto.
Ne fais confiance qu'à toi-même et contente-toi d'un rappel
J'utilise un utilitaire qui fait une copie à chaque fois que j'enregistre, ça te fait un versioning auto.
Pas mal fait, tu pourrais jeter un oeil : https://www.filehamster.com/
Le gratuit est largement suffisant
eric
Merci eriiic pour ta réponse je vais regarder ce logiciel mais le soucis c'est comme mon fichier est utilisé dans un système informatique fermé, je n'ai pas la possibilité d'installer ce type de programme. C'est la raison pour laquelle je recherche une petite macro à inclure dans mon fichier Excel.
Je pensais à faire cela car suite à une mauvaise manip (un copier - coller les valeurs) sur un filtre je me suis retrouvé avec des valeurs par erreur sur des lignes qui n'appartenaient pas aux filtres. Je m'en suis rendu compte trop tard pour faire un "annuler". Heureusement que j'avais fait une sauvegarde manuelle la veille ce qui m'a permis de reprendre mon fichier avec un jour de travail à reprendre. Cette sauvegarde horaire me permettrait de récupérer mon fichier avec des infos plus récentes si le problème devait se reproduire (ce que je ne souhaite pas).
A+
Bonjour,
Lire ce lien https://forum.excel-pratique.com/excel/sauvegarde-auto-par-vba-t2712.html ça pourra peut être t'aider.
Merci de Vincy pour ta réponse mais la macro correspond partiellement à ma recherche. Je voudrais lorsque je sauvegarde automatiquement par un sauvegarde sous que je reste toujours dans mon fichier initial.
Concrètement comment je peux sauvegarder mon fichier sous un autre nom sans qu'il se ferme pour que je continue à travailler dedans.
J'ai presque trouvé la solution à mon problème. Il faudrait juste que ma macro se lance automatiquement à chaque interval temps mais je n'y arrive pas.
Ma macro est :
Sub sauvegarde_régulière()
Dim sPath As String, Filename As String
'initiation du répertoires et du nom du fichier à copier.
sPath = "C:\Users\Philippe\Documents\"
sFilename = Format(Date, "yyyymmdd") & " à " & Hour(Now()) & " Heures et " & Minute(Now()) & " minutes_sauvegarde_de_secours" & ".xlsm"
'Sauvegarde de secours du fichier
ActiveWorkbook.SaveCopyAs Filename:= _
sPath & sFilename
End SubJ'ai mis dans le ThisWorkbook la macro ci-dessous qui se lancer au bout d'une minute (c'est pour l'exemple dans la macro finale je mettrait toutes les heures) :
Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("00:01:00"), "sauvegarde_régulière"
End SubJe voudrais que l'opération se répète toutes les minutes dans mon exemple mais ce n'est pas le cas. Où est mon erreur ou qu'est-ce que j'ai oublié ?
Merci.
Bonjour,
quand sauvegarde_régulière() est exécuté, à la fin de celle-ci il faut préparer la suivante avec un autre .OnTime
Et ne pas oublier d'annuler le .OnTime en attente à la fermeture du fichier, sinon il se rouvrira le moment venu.
Mais tu fais un Enregistrer sous, tu restes à travailler sur la copie en l'état. Il faudrait un autre .SaveAs en suivant sous le nom de l'original pour revenir dessus
eric
PS : je persiste à dire qu'il vaudrait mieux que ta macro commence par une demande de confirmation à valider manuellement "Voulez-vous faire le backup" oui/non