Copie de sauvegarde automatique fichier excel

matrix

XLDnaute Occasionnel
Bonjour à tous,

J'ai passé plusieurs heures à chercher sur internet sur le sujet comment faire une maximum de sauvegarde automatique d'un fichier excel tous en écrasant le plus ancien.

Il y avait plusieurs idée de sauvegarde mais pas ce que je cherche exactement.

Je voudrais qu'a la fermeture du fichier, qu'il fasse une sauvegarde avec le nom du fichier ainsi que la date et heure.

De plus, je voudrais qu'il fasse la sauvegarde dans Mes document et qu'il garde que les 15 dernières sauvegardes.

Donc si par exemple, dans mes documents, il y a déja 15 sauvegardes, la nouvelles sauvegarde écrasera la plus vielle sauvegarde et ainsi de suite.

Comment faire S.V.P

Merci de votre aide


en ce moment, j'ai comme code:
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim nom As String
    nom = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "_" & Hour(Time) & Minute(Time) & Second(Time) & "_" & ActiveWorkbook.Name
    ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & nom
    rep = MsgBox("Votre base de données est sauvegardée sous le nom : " & nom, vbYes + vbInformation, "Copie sauvegarde classeur")
End Sub
 
Dernière édition:

wilfried_42

XLDnaute Barbatruc
Re : Copie de sauvegarde automatique fichier excel

Bonjour

C'est compliqué de gerer les dates de sauvegarde en tant que date elle-meme, les sauvegardes sont faites en fonction de l'utilisation du classeur (comme elles sont automatiques), donc, les dimaches, et jours feries, elle risquent de ne pas etre faites..........

il y a neanmoins un moyen, mais il faut le traiter soit meme

2 cellules à gerer : une avec un compteur, et la 2eme avec la date du jour

le compteur : de 15 à 1, si 1 retour à 15 et ainsi de suite,
la date du jour : mettre la date du jour dans la cellule juste avent le saveAS (pour ne pas faire evoluer le compteur si c'est la meme date)

l'analyse :
Code:
ficsave = thisworkbook.path & "\save"& compteur & ".xls"
If date<datedeauvegarde then 
    compteur = compteur  - 1 : if compteur = 0 then compteur = 15
    ficsave = thisworkbook.path & "\save"& compteur & ".xls"
    datedesauvegarde = date
end if
application.displayalert = false
thisworbook.saveas ficsave
application.displayalert = true
application.quit

autre proposition dans fichier joint (avec les dates)
 

Pièces jointes

  • sauvegarde dates.zip
    9.8 KB · Affichages: 107
Dernière édition:

matrix

XLDnaute Occasionnel
Re : Copie de sauvegarde automatique fichier excel

Bonjour wilfried_42,

Ta première option me semble super.

Par contre il me donne des erreurs d'exécution 438, Propriété ou méthode non gérée par cette objet.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ficsave = ThisWorkbook.Path & "\save" & compteur & ".xls"
If Date < datedeauvegarde Then
compteur = compteur - 1: If compteur = 0 Then compteur = 15
ficsave = ThisWorkbook.Path & "\save" & compteur & ".xls"
datedesauvegarde = Date
End If
Application.displayalert = False
thisworbook.SaveAs ficsave
Application.displayalert = True
Application.Quit

End Sub
 

wilfried_42

XLDnaute Barbatruc
Re : Copie de sauvegarde automatique fichier excel

re:

le code est aussi dans le fichier joint, quelques erreur de frappes
ce code fait à main levée, n'est pas testé, celui du classeur joint oui

Application.displayalerts = False
thisworbook.SaveAs ficsave
Application.displayalerts = True
Application.Quit
 

matrix

XLDnaute Occasionnel
Re : Copie de sauvegarde automatique fichier excel

c'est bizzard.

Il sauvegarde "SAVE 1", ensuite je l'ouvre de nouveau et en le fermant, il garde encore "SAVE 1" mais avec les modification. Il ne fait pas "SAVE 2" avec les modif!
 

Discussions similaires

Statistiques des forums

Discussions
312 780
Messages
2 092 049
Membres
105 171
dernier inscrit
Laurent E