Copier coller cellule de plusieurs classeurs à un autre classeur [Résolu/Fermé]

Signaler
-
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
-
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

Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
52
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"
merci de votre réponse
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
c'est bon j'ai compris plus besoin de m'expliquer
merci encore pour votre réponse
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
52
De rien n'oublier pas de mettre la question résolu :)