Lancer la macro en fonction d'une date

J

JB

Guest
Bonjour le forum,

Je souhaite réaliser une sauvegrde de mes fichiers à chaque fin de mois ou dès que le fichier s'ouvre pour la première fois lorsque l'on viens de changer de mois.
Est-il possible de réaliser cette sauvegarde à partir du VBA.

Cordialement
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour JB, bonjour le forum,

Je te propose la macro événementielle suivante :

Disons que le si classeur s’appelle Gesplik.xls.
À l’ouverture, la macro vérifie si, dans le même dossier que celui dans lequel il est enregistré (et/ou un de ses sous-dossiers), si il n’existe pas un classeur nommé Gesplik_10_05.xls (le nom plus le mois plus l’année).
Si ce fichier n’existe pas alors elle le crée. Sinon rien ne se passe.
Ainsi à chaque ouverture de ton fichier lors d’un nouveau mois, une copie sera créée.


Voici le code :
Private Sub Workbook_Open() 'à l'ouverture du classeur
Dim CC As String 'déclare la variable CC
Dim MA As String 'déclare la variable MA
Dim Chem As String 'déclare la variable chem
Dim fs 'déclare la variable fs

Chem = ThisWorkbook.Path & '\\\\\\\\' 'définit la variable Chem
CC = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4) 'définit la variable CC (le nom sans l'extension)
MA = '_' & CStr(Month(Date)) & '_' & CStr(Year(Date)) 'définit la variable MA

'recherche de fichier
Set fs = Application.FileSearch
With fs
.LookIn = Chem 'dans le même dossier que celui de ce classeur
.SearchSubFolders = True 'cherche aussi dans les sous-dossiers
.Filename = CC & MA & '.xls' 'le classeur nommé : 'nom_de_ce_classeur_10_05.xls'
If .Execute() > 0 Then 'si ce classeur existe
GoTo fin 'sort de la procédure via la balise 'fin'
Else 'sinon
'enregistre ce classeur sous : 'nom_de_ce_classeur_10_05.xls'
ThisWorkbook.SaveAs Chem & CC & MA & '.xls'
'ouvre ce classeur
Application.Workbooks.Open (Chem & CC)
'ferme la copie
Application.Workbooks(CC & MA & '.xls').Close
End If
End With

fin: 'balise
End Sub

Message édité par: Robert, à: 18/10/2005 15:03
 
J

Jb

Guest
Bonjour Robert,

Merci. Ta réponse répond parfaitement à ma question. Par contre lorsque j'ouvre mon fichier, il ne se passe rien, alors j'ai mis la macro en liaison avec un bouton et lorsque l'on appuye sur le bouton j'ai ma sauvegarde qui se créer.
A tu également la réponse à ma deuxième question.
Merci
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour JB, bonjour le forum,

Tu dois copier le code dans le composant ThisWorkbook de VBE pour que la macro s'éxecute automatiquement à l'ouverture du classeur.
Ouvre VBE. Dans la feneêtre en haut à gauche, double-clique sur ThisWorkbook. Dans le grand cadre blanc à droite, colle le code que je t'ai donné dans son intégralité. Sauve ton casseur.

Maintenant la macro s'éxécute chaque fois que tu ouvre ton classeur. N'oublie pas que si la copie existe déjà rien ne se passe...
 

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 535
dernier inscrit
moimeme1