Copier coller cellule de plusieurs classeurs à un autre classeur

Résolu
she -  
skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai plusieurs fichiers excels dans un même dossier dans lequels je dois copiers des cellules precise dans un autre classeur cible (situé dans le même dossier).
Pour l'instant j'ai utilisé un simple copier coller en vba, mais j'aimerai connaitre un autre moyen (j'ai essayé d'autre code trouvé sur internet mais je n'y comprend pas grand chose)

1) j'aimerai pouvoir copiers les cellules sans avoir à ouvrir les classeurs source à chaque fois.
2) Dans un classeur source j'aimerai pouvoir changer la cellule qui change selon le mois choisi(au niveau vertical) de façon plus simple.

3)Je veux copier une cellule qui correspond par exemple à la colonne E et à la ligne 114
et trouver la cellule correspondant à un autre service pour cela je dois ajouter de 112 lignes
à chaque fois. puis copier ces cellules dans un autre classeur Range("B6:W6").

voici mon code

Private Sub CommandButton1_Click()
Set Wbk2 = Workbooks("Stat_metiers.xls")
Set Wbk3 = Workbooks("fichier.xls")

'pour cellule violette

Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("B2:X2") = Wbk2.Sheets("Feuil1").Range("C45:X45").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("B3:X3") = Wbk2.Sheets("Feuil1").Range("C47:X47").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("B4:X4") = Wbk2.Sheets("Feuil1").Range("C50:X50").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("B5:X5") = Wbk2.Sheets("Feuil1").Range("C51:X51").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("B7:X7") = Wbk2.Sheets("Feuil1").Range("C54:X54").Value

'pour cellule grise
'changer range de wbk3 par E pour Janvier; G pour Mars; J pour juin; M pour Septembre; P pour Décembre.

Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("B6") = Wbk3.Sheets("Feuil1").Range("E114").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("C6") = Wbk3.Sheets("Feuil1").Range("E226").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("D6") = Wbk3.Sheets("Feuil1").Range("E338").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("E6") = Wbk3.Sheets("Feuil1").Range("E450").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("F6") = Wbk3.Sheets("Feuil1").Range("E562").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("G6") = Wbk3.Sheets("Feuil1").Range("E674").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("H6") = Wbk3.Sheets("Feuil1").Range("E786").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("I6") = Wbk3.Sheets("Feuil1").Range("E898").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("J6") = Wbk3.Sheets("Feuil1").Range("E1010").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("K6") = Wbk3.Sheets("Feuil1").Range("E1122").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("L6") = Wbk3.Sheets("Feuil1").Range("E1234").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("M6") = Wbk3.Sheets("Feuil1").Range("E1346").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("N6") = Wbk3.Sheets("Feuil1").Range("E1458").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("O6") = Wbk3.Sheets("Feuil1").Range("E1570").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("P6") = Wbk3.Sheets("Feuil1").Range("E1682").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("Q6") = Wbk3.Sheets("Feuil1").Range("E1794").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("R6") = Wbk3.Sheets("Feuil1").Range("E1906").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("S6") = Wbk3.Sheets("Feuil1").Range("E2018").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("T6") = Wbk3.Sheets("Feuil1").Range("E2130").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("U6") = Wbk3.Sheets("Feuil1").Range("E2242").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("V6") = Wbk3.Sheets("Feuil1").Range("E2354").Value
Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("W6") = Wbk3.Sheets("Feuil1").Range("E2466").Value

End Sub

merci d'avance de votre aide :-)

1 réponse

  1. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
     
    Bonjour

    Private Sub CommandButton1_Click()
    Set Wbk2 = Workbooks("Stat_metiers.xls")
    Set Wbk3 = Workbooks("fichier.xls")
    
    
    Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("B2:X2") = Wbk2.Sheets("Feuil1").Range("C45:X45").Value
    Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("B3:X3") = Wbk2.Sheets("Feuil1").Range("C47:X47").Value
    Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("B4:X4") = Wbk2.Sheets("Feuil1").Range("C50:X50").Value
    Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("B5:X5") = Wbk2.Sheets("Feuil1").Range("C51:X51").Value
    Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range("B7:X7") = Wbk2.Sheets("Feuil1").Range("C54:X54").Value 
    
    For i = 1 to 22
    Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range(Chr(65+i)&"6") = Wbk3.Sheets("Feuil1").Range("E"&(i*112)+2).Value
    Next
    End Sub
    


    Comme ça c'est déjà un peu plus simple

    Et si tu veux importer des données d'un classeur sans l'ouvrir voici une bonne astuce :

    Dim Classeur_Chemin as string
    Classeur_Chemin = "C:"
    Dim Classeur_Nome as String
    Classeur_Nome = "ABBA.xlsm"
    Cells(1,  1) = ExecuteExcel4Macro("'" & Classeur_Chemin & "\[" & Classeur_Nome & "]" & "Feuil1'!R1C1")


    Cela importe dans la cellule A1, la Cellule A1 du classeur "ABBA.xlsm" Dans le réertoire \C:\

    N'hésitez pas a poser des questions
    *Pensez mettre vos messages en [Résolu] et cliquer sur le + des conseil qui vous ont été utils"
    0
    1. she
       
      merci de votre réponse
      0
    2. she
       
      Par contre je sais pas si mon message s'est posté, mais je repète ma question

      merci de votre réponse skk201
      le code marche comme je voulais.
      Par contre, comme je suis nulle en vba.
      j'ai donc ,qq question concernant le code, j'ai pas tous compris.

      Dans la ligne


      Workbooks("Ind_metiersES.xlsm").Sheets("Feuil1").Range(Chr(65+i)&"6") =Wbk3.Sheets("Feuil1").Range("E"&(i*112)+2).Value

      que veut dire Range(Chr(65+i)&"6") et pourquoi avoir mis p + 2 ici dans
      Range("E"&(i*112)+2).Value

      merci
      0
    3. she
       
      c'est bon j'ai compris plus besoin de m'expliquer
      merci encore pour votre réponse
      0
    4. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
       
      De rien n'oublier pas de mettre la question résolu :)
      0