Enregistrer copie classeur dans un dossier sauvegarde

roybaf

XLDnaute Occasionnel
Bonjour à tous,

Je suis encore dans la panade, j'ai fini un projet excel qui est un vrais bijou grâce à vous tous.

Après une présentation à mes collaborateurs, on m'a fait une remarque importante.

Mon fichier s'enregistre par rapport à ce que contient la cellule i3 dans le même dossier que le fichier de base.

Toute cette partie fonctionne parfaitement, le souci est que ce fichier est destiné à plusieurs clients et que l'on est pas à l'abri d'une bourde.

Je souhaite donc créer un sous dossier nommée "Sauvegarde" et qu'à chaque ouverture du fichier celui-ci génère une copie de sauvegarde reprenant le nom du fichier + date du jour.

Autre question, le dossier sauvegarde seras donc très rapidement volumineux d'où ma seconde interrogation, j'aimerai que seul les 30 derniers fichiers soient enregistrées, donc lorsque j'ouvre mon fichier pour la 31ème fois, la première sauvegarde s'écrase!!

Alors là j'ai peut-être réussi à coller quelqu'un non?

Merci à tous par avance.

Voici mon code enregistrer si quelqu'un en est à la recherche
Code:
Sub enregistrer()

If Sheets("MENU").Range("I3") = "" Then 'on teste si la cellule c3 est vide
    MsgBox "L'année n'est pas renseignée sur la feuille MENU !"
    End
End If

'on déclare le nom du fichier comme étant la cellule i3
nom_fichier = Sheets("MENU").Range("I3")

'et on enregistre le classeur excel dans le même dossier
'avec le nom de la cellule i3
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs (ThisWorkbook.Path & "\Tableau de suivi_" & nom_fichier & ".xlsm")
Application.DisplayAlerts = True

' ici Application.DisplayAlerts nous permet d'ecraser automatiquement un fichier avec le même nom

End Sub
 

Nairolf

XLDnaute Accro
Re : Enregistrer copie classeur dans un dossier sauvegarde

Salut roybaf, salut le forum,

Déjà, tu peux utiliser ces quelques lignes pour compter le nombre de fichiers d'un dossier (code non testé et adapté de ce site:Ce lien n'existe plus):

Dim fso As Object
Dim Dossier As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder("chemin du dossier de sauvegarde")
Cpte = Dossier.Files.Count

Ensuite, pour supprimer, c'est un peu plus compliquer car il faut contrôler tous les fichiers du dossier et trouver lequel est le plus ancien.
Une autre possibilté est de faire une suppression au-delà d'un certain délai, comme indiqué sur ce poste (bien sûr à adapter à ton cas): https://www.excel-downloads.com/threads/supprimer-fichiers-de-plus-de-3-mois.153241/.
 

Discussions similaires

Réponses
10
Affichages
172

Statistiques des forums

Discussions
311 733
Messages
2 082 009
Membres
101 865
dernier inscrit
MLL