XL 2013 Sauvegarde fichier back up

nicroq

XLDnaute Occasionnel
Bonjour a tous,

je reviens solliciter votre car il me reste une dernière chose a faire pour terminer mon code VBA.

Serait possible de faire une ssauvegarde du fichier à l'ouverture dans un dossier spécfique avec le nom du fichier + date du jour et si le fichier existe deja (car plusieurs ouverture du fichier par jour) que le fichier qui a le même nom soit sauvegardé avec nom fichier + date du jour + incrément .

Merci pour votre aide

Cordialement
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @nicroq , le Forum

Une solution assez simple d'emploi est d'utiliser la méthode "Workbook.SaveCopyAs" et pour le numéro d'incrément, de simplement horodater le FileName à la seconde près sans se prendre la tête pour calculer un numéro de série (!)

VB:
Option Explicit

Private Const TheFullBackUpPath As String = "C:\Users\te\Documents\XLD\BackUp\" '<<<<<<<<< à adapter !

Private Sub Workbook_Open()
Dim WB As Workbook
Dim FileName As String

Set WB = ThisWorkbook
FileName = Left(WB.Name, Len(WB.Name) - 5)
ThisWorkbook.SaveCopyAs TheFullBackUpPath & FileName & Format(Now, "YYYY-MM-DD_hh-mm-ss") & ".xlsx"

End Sub

Bonne journée
@+Thierry
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Nicroq, Thierry,
Un autre exemple en PJ.
J'ai pris le parti d'appeler la sauvegarde :
Sauvegarde_NomFichier_Année_Mois_Jour_Heure_Minutes_Secondes.xlsm
Ce qui évite la gestion d'indices.
il vous faut modifier la ligne : Chemin = "C:\Users\PC_PAPA\Desktop\Nicroq\Sauvegardes\" avec votre propre chemin.
 

Pièces jointes

  • Nicroq.zip
    31.6 KB · Affichages: 9

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonjour @nicroq , @sylvanu , le Forum

Ah, là c'est un peu plus compliqué, il faut faire un peu comme sur un Serveur SQL un "Maintenance Plan" avec un Disk CleanUp....

Mais l'information :
de limiter aux 10 dernières sauvegardes?
est trop peu précise, 10 enregistrements dans la même journée ? Dans la même semaine ? sur tous les enregistrements contenus dans le Folder "BackUp" ?

Pour être 100% transaparent Il faudra je pense plutôt faire un VBS de maintenance plan qui peut-être schédulé automatiquement par Windows Task Manager , il faudra des droits Local Admin en réseau pour le schéduler même Logged-Off d'un serveur la nuit, et il te faudra aussi que les Proxy/FireWall/AntiVirus laissent passer les VBS et des instructions comme "kill", qui peuvent être très mal-vues.

Sinon ce peut être fait depuis VBA, mais disons que ce sera un autre classeur et surtout pas dans le trigger de WorkBook_Open, mais avec une sorte de console d'adminstration...

Il y a plusieurs approches... (Et encore d'autres, telles que de backuper que les Data et pas les Classeurs, gain de place...)

Bien à toi, à vous
@+Thierry
 

GALOUGALOU

XLDnaute Accro
bonjour nicrocq, bonjour sylvanu thierry bonjour le forum
à la réflexion se limiter au 10 dernières sauvegardes, suppose que l'ouverture multiple sur une journée, qui va multiplier les sauvegardes pose un problème
une réflexion :
pourquoi ne pas se limiter à une sauvegarde par jour à la première ouverture

ou alors, comme proposé dans le classeur ci-dessous, se limiter à une sauvegarde à la fermeture avec une fréquence horaire déterminée. (choisir en c2 la fréquence)
je vous propose de tester la solution du classeur ci-joint.
en a2, maintenant, date et heure, en b2 date et l'horaire à la fermeture du fichier, en c2 la fréquence horaire entre deux sauvegardes, en d2 la limite horaire avant le déclenchement d'une sauvegarde.
cordialement
galougalou
 

Pièces jointes

  • forum_ouverture_sauvegarde.xlsm
    28.1 KB · Affichages: 7
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 236
Messages
2 086 481
Membres
103 232
dernier inscrit
logan035