Modifier dans macro nom de fichier dont une partie change tous les mois

Bonjour le Forum,

Je débute avec les macros et j'aurai besoin de votre expertise

J'ai réalisé une macro (via la fonction enregistrement) qui reprend les données contenues dans 5 onglet d'un classeur excel nommé "BALANCE DES 16 POUR POINTAGE MENSUEL 06.2019.xls" et les colle dans un second classeur excel nommé "Pointage.des.16_06.2019.xlsm".

Ci-dessous un extrait du code généré :

Windows("BALANCE DES 16 POUR POINTAGE MENSUEL 06.2019_.xls").Activate

Sheets("détail comptes par opér").Select

Range("B3").Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

Windows("Pointage.des.16_06.2019.xlsm").Activate

Sheets("1-BO.Détail.Cptes.par.Opération").Select

Range("B3").Select

ActiveSheet.Paste

Elle marche convenablement, mais je souhaiterai qu'elle fonctionne tous les mois. Je cherche donc à modifier dans le code le nom des classeurs pour que la macro fonctionne quand le fichier s'appellera "BALANCE DES 16 POUR POINTAGE MENSUEL 07.2019.xls", "BALANCE DES 16 POUR POINTAGE MENSUEL 08.2019.xls"...

J'ai essayé de modifier le code comme suit, mais patatra …..

Nom_Fichier = "BALANCE DES 16 POUR POINTAGE MENSUEL " & Format(Date, "mm") & "." & Format(Date, "yyyy") & ".xls"

Windows(Nom_Fichier).Activate

Sheets("détail comptes par opér").Select

Range("B3").Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

Windows("Matrice.pointage.des.16_vTCD_avec.copie.auto.xlsm").Activate

Sheets("1-BO.Détail.Cptes.par.Opération").Select

Range("B3").Select

ActiveSheet.Paste

Je crois comprendre qu'il ne reconnaît pas le nom du fichier générique...

Pouvez-vous m'éclairer ?

Merci par avance

Bonjour Pmid20,

...
Dim mois   As String

    mois = Format(Date, "mm")

    Windows("BALANCE DES 16 POUR POINTAGE MENSUEL " & mois & ".2019_.xls").Activate...

Bonjour,

Pour les noms de fichiers, pas de ponctuation (donc pas de point)

https://www.openska.com/tutoriel/comment-nommer-ses-fichiers-informatiques.html

Si je comprends bien le fonctionnement :

Nom_Fichier = "BALANCE DES 16 POUR POINTAGE MENSUEL " & Format(Date, "mm") & "." & Format(Date, "yyyy") & ".xls"
' Je vais sur le premier classeur
Windows(Nom_Fichier).Activate
Sheets("détail comptes par opér").Select
Range("B3").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
' Je réalise une copie de ma selection
Selection.Copy
' Je vais sur le second classeur
Windows("Matrice.pointage.des.16_vTCD_avec.copie.auto.xlsm").Activate
Sheets("1-BO.Détail.Cptes.par.Opération").Select
Range("B3").Select
' Je colle ce que j'ai dans le presse-papier.
ActiveSheet.Paste

Donc, ce ne serait pas au niveau du second classeur qu'on veut sauvegarder sous un nom variable ?

Bonjour Sequoyah,

enfin ce sont les deux classeurs excels qui vont changer de nom au fil des mois, toujours sous le même format mm.yy.

Si je comprends bien le fonctionnement :

Nom_Fichier = "BALANCE DES 16 POUR POINTAGE MENSUEL " & Format(Date, "mm") & "." & Format(Date, "yyyy") & ".xls"
' Je vais sur le premier classeur
Windows(Nom_Fichier).Activate
Sheets("détail comptes par opér").Select
Range("B3").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
' Je réalise une copie de ma selection
Selection.Copy
' Je vais sur le second classeur
Windows("Matrice.pointage.des.16_vTCD_avec.copie.auto.xlsm").Activate
Sheets("1-BO.Détail.Cptes.par.Opération").Select
Range("B3").Select
' Je colle ce que j'ai dans le presse-papier.
ActiveSheet.Paste

Donc, ce ne serait pas au niveau du second classeur qu'on veut sauvegarder sous un nom variable ?

Bonjour,

enfin ce sont les deux classeurs excel qui vont changer de nom au fil des mois, toujours sous le même format mm.yy.

re-bonjour,

Je viens de comprendre ce qui bloquait dans le code que j'avais mis.

Comme on est en juillet, et que le dernier fichier est celui du mois de juin, il ne trouvait pas le classeur (je vous l'ai dit je débute… ). Si vous pouvez me confirmer, Date pointe vers la date du jour ?

Du coup je reformule ma question initiale.

Il faudrait donc que ma macro copie des données du classeur ouvert à l'instant T.

En effet le pointage du 30 juin est réalisé par les équipes début juillet, celui du 31/07, début août....

Merci de votre aide car là je nage dans les profondeurs ....

Ah ben oui si tu ne nous dis pas tout !

Pour avoir le mois précédent :

DatePrecedente = DateAdd("m", -1, Date)
'Puis par exemple
Nom_Fichier = "BALANCE DES 16 POUR POINTAGE MENSUEL " & Format(DatePrecedente, "mm") & "." & Format(DatePrecedente, "yyyy") & ".xls"

Super ça marche !!!

Question subsidiaire :

comment la macro va gérer le fichier du 31 décembre avec une date qui sera au dd/01/2020 ?

Il faut ajouter une condition ?

Merci !!!

Tu tiens une excellente question et pour se convaincre que tout se passera bien, il faut faire un test !

Sub test()
ddd = "01/01/2020"
DatePrecedente = DateAdd("m", -1, ddd)
'Puis par exemple
Nom_Fichier = "BALANCE DES 16 POUR POINTAGE MENSUEL " & Format(DatePrecedente, "mm") & "." & Format(DatePrecedente, "yyyy") & ".xls"

MsgBox Nom_Fichier

End Sub

Ouf ! On est loin du bug de l'an 2000

Super et un grand merci pour ton aide précieuse… on va gagner un temps fou en automatisant ces copies de données !

Rechercher des sujets similaires à "modifier macro nom fichier partie change tous mois"