Macro se référencant à plusieurs fichiers
Résolu
Dubi21
Messages postés
51
Statut
Membre
-
Dubi21 Messages postés 51 Statut Membre -
Dubi21 Messages postés 51 Statut Membre -
Bonjour,
Je vais essayer d'être clair, je rempli un fichier excel tous les mois. Tous les mois je dois transférer (de mon fichier) mes données sur un fichier qui se trouve sur un serveur commun et qui change de nom tous les mois (ex : 01 2014 ; 02 2014 ; 03 2014 etc....)
Pour faire cette macro, mes deux fichiers sont ouverts. J'ai la macro suivante :
Sheets("419830").Select
Windows("03 2014.xls") .Activate
Windows("MATRICE CONTROLE SCF.xls").Activate
Sheets("419110").Select
Range("D4:E4").Select
Selection.Copy
Etc....
Je voudrais qu'il applique cette macro au fichiers ("03 2014.xls") ou ("04 2014.xls")ou("05 2014.xls"......etc) Que je rentre le nom des fichiers une bonne fois pour toute et que ma macro fonctionne toute l'année.
Est-ce possible ?
Merci à vous
Je vais essayer d'être clair, je rempli un fichier excel tous les mois. Tous les mois je dois transférer (de mon fichier) mes données sur un fichier qui se trouve sur un serveur commun et qui change de nom tous les mois (ex : 01 2014 ; 02 2014 ; 03 2014 etc....)
Pour faire cette macro, mes deux fichiers sont ouverts. J'ai la macro suivante :
Sheets("419830").Select
Windows("03 2014.xls") .Activate
Windows("MATRICE CONTROLE SCF.xls").Activate
Sheets("419110").Select
Range("D4:E4").Select
Selection.Copy
Etc....
Je voudrais qu'il applique cette macro au fichiers ("03 2014.xls") ou ("04 2014.xls")ou("05 2014.xls"......etc) Que je rentre le nom des fichiers une bonne fois pour toute et que ma macro fonctionne toute l'année.
Est-ce possible ?
Merci à vous
1 réponse
-
Bonjour
Si tu veux récupérer le mois courant et l'année courante et recomposer le nom tu peux procéder ainsi en début de macro :
m= Month(Now)
If m< 10 Then m= "0" & m
nom= m & " " & Year(Now) & ".xls"
Windows(nom) .Activate
Cdlmnt
-
-
Je ne sais pas si j'ai bien utilisé ton lien mais ça ne fonctionne pas si j'ouvre le fichier nommé 02 2014 (un peu normal car la macro fait référence au fichier du mois suivant). Cela fonctionne avec le 03 2014 (en ex : ci-dessous) mais est-ce qu'il faut que je supprime (ou plutôt remplace par un nom plus « général ») tous les noms qui font références au fichier qui changera nom tous les mois ?
m = Month(Now)
If m < 10 Then m = "0" & m
nom = m & " " & Year(Now) & ".xls"
Windows("03 2014").Activate
'
Windows("03 2014.xls").Activate <--?
Windows("MATRICE CONTROLE SCF.xls").Activate
Sheets("419110").Select
Range("D4:E4").Select
Selection.Copy
Windows("03 2014.xls").Activate <--?
Range("D21").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("MATRICE CONTROLE SCF.xls").Activate
Range("D5:E6").Select
Application.CutCopyMode = False
Selection.Copy
Windows("03 2014.xls").Activate ..... <-- ?
Je sais pas si je suis très clair dans mes explications...
Merci pour ton aide -
Les 3 premieres lignes de la macro recomposent un nom de fichier à partir du mois en cours et de l'année en cours ainsi quand on est en mars 2014 la variable nom prend la valeur "03 2014.xls"; il faut donc remplacer ensuite chaque Windows("03 2014").Activate de la macro par Windows(nom).Activate
En avril le nom du fichier deviendra "04 2014.xls" etc
Par contre si tu veux choisir le mois indépendamment du mois en cours (par exemple pour transférer en avril les donnée de mars), il faut faire une fenêtre de choix en remplaçant la 1ere ligne m = Month(Now) par m=inputbox("Entrer le n° du mois à transférer")
Cdlmnt -
-