Lancer la macro en fonction d'une date

  • Initiateur de la discussion Initiateur de la discussion JB
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
636
Retour