Données entre deux fichiers

Bonjour à tous,

Je poste ici mon besoin car je dois copier des données d'une feuille d'un fichier 1 où toutes les données sont en lignes dans un tableau vers plusieurs feuilles du fichier 2 en fonction de la colonne 2 du fichier 1.

Voici mon code qui fonctionne bien mais rien ne se passe lorsque je l'exécute, les données ne se copient pas. Savez vous pourquoi?

Je vous joins également les deux fichiers.

Sub Ventilation()

Dim i As Integer
Dim LastRow As Integer
Dim DerniereLigne As Integer

Workbooks("Fichier 2").Activate

For i = 1 To 4

ActiveWorkbook.Sheets(i).Select
LastRow = Range("A1000000:H1000000").End(xlUp).Row

Workbooks("Fichier 1").Activate
Workbooks("Fichier 1").Sheets("Feuil1").Select
DerniereLigne = Range("A1000000").End(xlUp).Row


For k = 2 To DerniereLigne

Workbooks("Fichier 1").Activate
ActiveWorkbook.Sheets(1).Select
Workbooks("Fichier 2").Activate
If ActiveWorkbook.Sheets(i).Name = Cells(k, 2).Value Then

Rows(k).Select
Selection.Copy

ActiveWorkbook.Sheets(i).Select
LastRow = Range("A1000000:H1000000").End(xlUp).Row + 1
Cells(LastRow, 1).Select
ActiveSheet.Paste

End If

Next k

Next i

End Sub

Merci à vous par avance,

3fichier-1.xlsm (14.79 Ko)
3fichier-2.xlsm (20.74 Ko)

Bonjour et bienvenue sur le forum

L'instruction :

Workbooks("Fichier 1").Activate

est incorrecte. Il te faut écrire l

Workbooks("Fichier 1.xlsm").Activate

Pareil pour Fichier 2

Et puis, fais attention à ce que ces noms soient exactement ceux des fichiers : "Fichier 1" est différent de "Fichier-1"

Je remarque par alleurs que la macro prend du temps à s'''exécuter. Tu aurais intérêt à mettre au début l'instruction :

Application.ScreenUpdating = False

Et enfin, au lieu de recopier ligne par ligne, tu gagnerais du temps en recopiant tout le tableau d'un coup...

Bye !

Bonjour et bienvenu

Ci joint ma solution

la macro se lance en etant sur fichier-2 ctrl+shift+w

4fichier-2.xlsm (18.91 Ko)

A+ François

Bonjour à vous deux,

Merci pour vos propositions. La solution de François fonctionne parfaitement et répond à mon besoin.

J'ai juste rajouté ce code pour supprimer les données des colonnes qui venaient en plus.

w.Activate

For i = 1 To 4

ActiveWorkbook.Sheets(i).Select
Range("I11:q44").ClearContents

Next i

Merci encore à vous,

Bonne soirée!

Rechercher des sujets similaires à "donnees entre deux fichiers"