Macro se référencant à plusieurs fichiers

Résolu
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

1 réponse

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    0
    1. Dubi21 Messages postés 51 Statut Membre
       
      Merci pour ta réponse, j'essaye ça et te dis si cela convient

      cdt
      0
    2. Dubi21 Messages postés 51 Statut Membre
       
      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
      0
    3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      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
      0
    4. Dubi21 Messages postés 51 Statut Membre
       
      Génial !
      Tout fonctionne, merci beaucoup !!! Je découvre les macros petit à petit et le gain de temps dans mon travail, c'est affolent :-)
      Merci encore
      Cdl
      0