Copier coller entre deux classeur

Bonjour à tous,

je souhaite effectuer dans un fichier (book3) la somme de deux colonnes presentes dans deux autres fichiers distincts (respectivement dans book1 et book2).

J'ai effectué la macro ci-dessous mais j'obtiens un message d'erreur

"Sub nom()

Application.Workbooks.Open "C:\Users\nom\Desktop\exercice tests\Book1.xlsx"

Application.Workbooks.Open "C:\Users\nom\Desktop\exercice tests\Book2.xlsx"

For i = 1 To 10

Workbooks("Book1.xlsx").Activate

Cells(i, 1).Copy

Cells(i, 1).Copy

Workbooks("Book3.xlsm").Activate

Range("A1").Select

Selection.Paste

Workbooks("Book2.xlsx").Activate

Cells(i, 1).Select

Cells(i, 1).Copy

Workbooks("Book3.xlsm").Activate

Range("B1").Select

Selection.Paste

Next

End Sub"

Message d'erreur : "Run-time error '1004':

Application-defined or object-defined error"

Savez-vous ce que cela signifie?

Cdt

bonjour

pourquoi du VBA ?

il suffit de mettre une formule et de faire des liens (de simples = )

la formule peut se trouver dans les fichiers de départ ou dans le fichier d'arrivée, ou dans un fichier intermédiaire.

les valeurs sont mises à jour en permanence, automatiquement.

souvent les formules sont des SOMME ou, s'il y a des conditions, des SOMMEPROD

Bonjour Campagniej, bonjour le forum,

Pas besoin d'une boucle pour ton code. Essaie comme ça (nom des onglets à adapter) :

Sub nom()
Dim CD As Workbook 'déclare la variabe CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variabe OD (Onglet Destination)
Dim CS1 As Workbook 'déclare la variabe CS1 (Classeur Source 1)
Dim OS1 As Worksheet 'déclare la variabe OS1 (Onglet Source 1)
Dim CS2 As Workbook 'déclare la variabe CS2 (Classeur Source 2)
Dim OS2 As Worksheet 'déclare la variabe OS2 (Onglet Source 2)

Set CD = ThisWorkbook 'définit le classeur destination CD
Set OD = CD.Worksheets("Feuil1") 'définit l'onglet destination OD (à adapter à ton cas)
Set CS1 = Application.Workbooks.Open("C:\Users\nom\Desktop\exercice tests\Book1.xlsx") 'définit le classeur source 1 CS1
Set OS1 = CS1.Worksheets("Feuil1") 'définit l'onglet source 1 OS1(à adapter à ton cas)
Set CS2 = Application.Workbooks.Open("C:\Users\nom\Desktop\exercice tests\Book2.xlsx") 'définit le classeur source 2 CS2
Set OS2 = CS2.Worksheets("Feuil1") 'définit l'onglet source 2 OS2(à adapter à ton cas)
OS1.Range("A1:A10").Copy OD.Range("A1") 'copy la plage A1:A10 de l'onglet source 1 et la colle dans la cellule A1 de l'onglet destination
OS2.Range("A1:A10").Copy OD.Range("B1") 'copy la plage A1:A10 de l'onglet source 2 et la colle dans la cellule B1 de l'onglet destination
End Sub

En revanche je n'ai pas compris où tu veux la somme ?!...

[Édition]

Bonjour Jmd, nos posts se sont croisés...

Merci pour le coup de main, je voudrais mettre le résultat dans la colonne A du fichier Book3 sur lequel j'écris le code.

Bonsoir,

Puisque tu veux toujours avoir les valeurs dans A1 et B1 d'après ta macro pourquoi utilisé une boucle. L'erreur se trouve à ce niveau là range("A1").select et range("B1").select.

Je pense que la macro de ThauThème devrait faire l'affaire.

Que la lumière soit

Bonsoir le fil, le forum,

Si tu veux tout dans la colonne A essaie comme ça :

Sub nom()
Dim CD As Workbook 'déclare la variabe CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variabe OD (Onglet Destination)
Dim CS1 As Workbook 'déclare la variabe CS1 (Classeur Source 1)
Dim OS1 As Worksheet 'déclare la variabe OS1 (Onglet Source 1)
Dim CS2 As Workbook 'déclare la variabe CS2 (Classeur Source 2)
Dim OS2 As Worksheet 'déclare la variabe OS2 (Onglet Source 2)

Set CD = ThisWorkbook 'définit le classeur destination CD
Set OD = CD.Worksheets("Feuil1") 'définit l'onglet destination OD (à adapter à ton cas)
Set CS1 = Application.Workbooks.Open("C:\Users\nom\Desktop\exercice tests\Book1.xlsx") 'définit le classeur source 1 CS1
Set OS1 = CS1.Worksheets("Feuil1") 'définit l'onglet source 1 OS1(à adapter à ton cas)
Set CS2 = Application.Workbooks.Open("C:\Users\nom\Desktop\exercice tests\Book2.xlsx") 'définit le classeur source 2 CS2
Set OS2 = CS2.Worksheets("Feuil1") 'définit l'onglet source 2 OS2(à adapter à ton cas)
OS1.Range("A1:A10").Copy OD.Range("A1") 'copy la plage A1:A10 de l'onglet source 1 et la colle dans la cellule A1 de l'onglet destination
OS2.Range("A1:A10").Copy OD.Range("A11") 'copy la plage A1:A10 de l'onglet source 2 et la colle dans la cellule A11 de l'onglet destination
End Sub

Mais je me demande à quoi sert que je commente le code ?!... Mais si tu ne le lis même pas c'est sûr que...

Rechercher des sujets similaires à "copier coller entre deux classeur"