Regrouper 2 fichiers excel en 1 seul
Résolu/Fermé
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
-
21 déc. 2011 à 09:28
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 13 janv. 2012 à 12:28
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 13 janv. 2012 à 12:28
A voir également:
- Regrouper 2 fichiers excel en 1 seul
- Liste déroulante excel - Guide
- Regrouper plusieurs pdf en 1 seul - Guide
- Regrouper plusieurs feuilles excel en une seule - Guide
- Mise en forme conditionnelle excel - Guide
- Si et excel - Guide
14 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
21 déc. 2011 à 10:10
21 déc. 2011 à 10:10
Bonjour,
Tu ne donne aucun emplacement de tes données, il te faudra adapter les noms des classeurs, des feuilles et les colonnes où chercher et où copier.
Si tu ne comprend pas bien précise les emplacement de ces données.
Le code à mettre dans un module général Module1 par exemple.
'Supposons "langue" et "Domaineactivite" respectivement dans
'les colonnes A et B des 2 classeurs
'Recopier les données des colonnes C à Q du classeur2
'Sur les colonnes J du classeur1
A+
Tu ne donne aucun emplacement de tes données, il te faudra adapter les noms des classeurs, des feuilles et les colonnes où chercher et où copier.
Si tu ne comprend pas bien précise les emplacement de ces données.
Le code à mettre dans un module général Module1 par exemple.
'Supposons "langue" et "Domaineactivite" respectivement dans
'les colonnes A et B des 2 classeurs
'Recopier les données des colonnes C à Q du classeur2
'Sur les colonnes J du classeur1
Sub RapatrieDonnee() Dim Lig1 As Long, Lig2 As Long Dim Wks As Worksheet Set Wks = Workbooks("Fichier2.xls").Sheets("Feuil1") With Workbooks("Fichier1.xls").Sheets("Feuil1") For Lig1 = 1 To .[A65536].End(xlUp).Row For Lig2 = 1 To Wks.[A65536].End(xlUp).Row If .Cells(Lig1, "A") = Wks.Cells(Lig2, "A") And .Cells(Lig1, "B") = Wks.Cells(Lig2, "B") Then Wks.Range(Cells(Lig2, "C"), Cells(Lig2, "Q")).Copy .Cells(Lig1, "J") Exit For End If Next Lig2 Next Lig1 End With End Sub
A+
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
21 déc. 2011 à 10:15
21 déc. 2011 à 10:15
Bonjour et merci,
Lorsque tu dis "sur les colonnes J du classeur 1" tu veux dire plutôt "à partir de la colonne J" ?
En effet en rapatriant les colonnes C à Q vers le classeur 1, elles le seraient donc de la colonne J à X sur le classeur 1, est-ce bien cela ?
Merci d'avance :)
Mathieu
Lorsque tu dis "sur les colonnes J du classeur 1" tu veux dire plutôt "à partir de la colonne J" ?
En effet en rapatriant les colonnes C à Q vers le classeur 1, elles le seraient donc de la colonne J à X sur le classeur 1, est-ce bien cela ?
Merci d'avance :)
Mathieu
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 21/12/2011 à 10:23
Modifié par lermite222 le 21/12/2011 à 10:23
Exact, Pour la copie ont ne donne que le point d'insertion pour éviter la non concordance des plages.
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
21 déc. 2011 à 11:07
21 déc. 2011 à 11:07
J'enregistre une erreur 1004... avec le code ci-dessous :
Sub RapatrieDonnee()
Dim Lig1 As Long, Lig2 As Long
Dim Wks As Worksheet
Set Wks = Workbooks("Rappatriement données.xls").Sheets("Feuil2")
With Workbooks("Rappatriement données.xls").Sheets("Feuil1")
For Lig1 = 1 To .[A65536].End(xlUp).Row
For Lig2 = 1 To Wks.[A65536].End(xlUp).Row
If .Cells(Lig1, "A") = Wks.Cells(Lig2, "A") And .Cells(Lig1, "B") = Wks.Cells(Lig2, "B") Then
Wks.Range(Cells(Lig2, "C"), Cells(Lig2, "AP")).Copy .Cells(Lig1, "S")
Exit For
End If
Next Lig2
Next Lig1
End With
End Sub
Sub RapatrieDonnee()
Dim Lig1 As Long, Lig2 As Long
Dim Wks As Worksheet
Set Wks = Workbooks("Rappatriement données.xls").Sheets("Feuil2")
With Workbooks("Rappatriement données.xls").Sheets("Feuil1")
For Lig1 = 1 To .[A65536].End(xlUp).Row
For Lig2 = 1 To Wks.[A65536].End(xlUp).Row
If .Cells(Lig1, "A") = Wks.Cells(Lig2, "A") And .Cells(Lig1, "B") = Wks.Cells(Lig2, "B") Then
Wks.Range(Cells(Lig2, "C"), Cells(Lig2, "AP")).Copy .Cells(Lig1, "S")
Exit For
End If
Next Lig2
Next Lig1
End With
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
21 déc. 2011 à 11:14
21 déc. 2011 à 11:14
pour information dans la feuille 1 il se peut qu'en colonne a et b il y ait des valeurs qui n'existent pas dans le fichier 2 colonne a et b auquel cas il faudrait passer à la ligne suivante si il ne trouve pas de concordance.
Je sais pas si ca peut aider
Je sais pas si ca peut aider
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
21 déc. 2011 à 11:57
21 déc. 2011 à 11:57
Il passe à la ligne suivante si pas trouver.
Erreur 1004, doit y avoir une erreur dans tes nom de fichier ou de feuille,
tu doit adapter tout les noms aux noms de tes classeurs et feuilles.
Pour éviter les erreurs faire des copier/coller.
Pour les classeur, dans l'explorateur Windows et pour les feuilles double clic sur l'onglet et copier/Coller. des fois il y a des espaces que l'ont ne distingue pas.
Erreur 1004, doit y avoir une erreur dans tes nom de fichier ou de feuille,
tu doit adapter tout les noms aux noms de tes classeurs et feuilles.
Pour éviter les erreurs faire des copier/coller.
Pour les classeur, dans l'explorateur Windows et pour les feuilles double clic sur l'onglet et copier/Coller. des fois il y a des espaces que l'ont ne distingue pas.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
21 déc. 2011 à 12:12
21 déc. 2011 à 12:12
En te relisant...
Tu dis. J'ai 2 fichiers excel
Mais dans le code que tu montre tu met le même nom de classeur pour les 2 ??
Si 2 fichiers ça veux dire 2 feuilles faudra modifier.
:
Tu dis. J'ai 2 fichiers excel
Mais dans le code que tu montre tu met le même nom de classeur pour les 2 ??
Si 2 fichiers ça veux dire 2 feuilles faudra modifier.
:
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
21 déc. 2011 à 12:17
21 déc. 2011 à 12:17
Dis aussi, sur quel ligne tu a l'erreur
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
21 déc. 2011 à 12:18
21 déc. 2011 à 12:18
oui j'ai tout dans un seul fichier mais avec pour titre en feuille 1 1 et en feuille 2 2 ce qui donne :
Sub RapatrieDonnee()
Dim Lig1 As Long, Lig2 As Long
Dim Wks As Worksheet
Set Wks = Workbooks("emailing.xls").Sheets("2")
With Workbooks("emailing.xls").Sheets("1")
For Lig1 = 1 To .[A65536].End(xlUp).Row
For Lig2 = 1 To Wks.[A65536].End(xlUp).Row
If .Cells(Lig1, "A") = Wks.Cells(Lig2, "A") And .Cells(Lig1, "B") = Wks.Cells(Lig2, "B") Then
Wks.Range(Cells(Lig2, "C"), Cells(Lig2, "AP")).Copy .Cells(Lig1, "S")
Exit For
End If
Next Lig2
Next Lig1
End With
End Sub
Sub RapatrieDonnee()
Dim Lig1 As Long, Lig2 As Long
Dim Wks As Worksheet
Set Wks = Workbooks("emailing.xls").Sheets("2")
With Workbooks("emailing.xls").Sheets("1")
For Lig1 = 1 To .[A65536].End(xlUp).Row
For Lig2 = 1 To Wks.[A65536].End(xlUp).Row
If .Cells(Lig1, "A") = Wks.Cells(Lig2, "A") And .Cells(Lig1, "B") = Wks.Cells(Lig2, "B") Then
Wks.Range(Cells(Lig2, "C"), Cells(Lig2, "AP")).Copy .Cells(Lig1, "S")
Exit For
End If
Next Lig2
Next Lig1
End With
End Sub
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
21 déc. 2011 à 12:20
21 déc. 2011 à 12:20
pour le debogage, je ne sais pas comment faire. je vais essayer de voir comment ca marche
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
21 déc. 2011 à 12:11
21 déc. 2011 à 12:11
C'est ce que je viens de faire. Mais ca ne marche pas.
J'ai mis à la place de Feuil1, 1
J'ai mis à la place de Feuil2, 2
J'ai mis à la place de Rappatriement données.xls, emailing.xls
Et rien n'y fait
J'ai mis à la place de Feuil1, 1
J'ai mis à la place de Feuil2, 2
J'ai mis à la place de Rappatriement données.xls, emailing.xls
Et rien n'y fait
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
21 déc. 2011 à 12:33
21 déc. 2011 à 12:33
Rappel, Sur quel ligne l'erreur ?
Et tu a bien mis le code dans un module général ? (Module1) >> Insertion >> Module et c'est dans cette feuille que tu doit mettre le code.
Et tu a bien mis le code dans un module général ? (Module1) >> Insertion >> Module et c'est dans cette feuille que tu doit mettre le code.
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
12 janv. 2012 à 16:15
12 janv. 2012 à 16:15
Bonjour, je reviens vers vous pour le code.
cela ne fonctionne pas; en effet dès qu'il trouve la première correspondance, les lignes d'après se collent sans tenir compte des conditions
cela ne fonctionne pas; en effet dès qu'il trouve la première correspondance, les lignes d'après se collent sans tenir compte des conditions
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
12 janv. 2012 à 16:16
12 janv. 2012 à 16:16
D'ailleurs dans le code il s peut qu'une ligne du document Lig1 soit réutilisé plusieurs fois ca peut aider
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
12 janv. 2012 à 16:53
12 janv. 2012 à 16:53
Pas sympa de revenir après autant de temps, faut se remettre dans le contexte et ce n'est pas évident.
Je vais voir si je peu continué à t'aider.
Le code tourne jusqu'au bout ?
Je vais voir si je peu continué à t'aider.
Le code tourne jusqu'au bout ?
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
12 janv. 2012 à 16:59
12 janv. 2012 à 16:59
oui désolé, je sais bien mais ce n'est qu'aujourd'hui que je m'y suis remis (ayant été en arrêt entre temps (rupture ligaments croisés) :)
En tout cas j'ai suivi vos instructions et cela ne me rempli que les premières lignes
Je peux vous envoyer un bout de fichier si vous le souhaitez ?
En attendant de vous lire,
Mathieu
En tout cas j'ai suivi vos instructions et cela ne me rempli que les premières lignes
Je peux vous envoyer un bout de fichier si vous le souhaitez ?
En attendant de vous lire,
Mathieu
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
12 janv. 2012 à 17:10
12 janv. 2012 à 17:10
Ce serait plus facile avec un "bout de fichier"
Tu peu le déposer sur Cjoint.com et mettre le lien dans un poste suivant
Tu peu le déposer sur Cjoint.com et mettre le lien dans un poste suivant
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
12 janv. 2012 à 17:30
12 janv. 2012 à 17:30
N'ai plus beaucoup de temps ce soir, pour demain ?
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
12 janv. 2012 à 17:37
12 janv. 2012 à 17:37
pas de soucis... :) on voit cela demain avec paisir
Excellente soirée
Excellente soirée
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 13/01/2012 à 02:17
Modifié par lermite222 le 13/01/2012 à 02:17
Le fichier que tu a poster ne reflète en rien tes explications.
1°) Les feuilles sont nommées BaseDeDonnées et DonnéesMarketing et pas 1 et 2 ?
3°) Il n'y a aucune macro dedans ?
Explique :-)
Edit : En relisant.. je commence à comprendre, mais les données des colonnes ne correspondent pas d'une feuille à l'autre ?
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
1°) Les feuilles sont nommées BaseDeDonnées et DonnéesMarketing et pas 1 et 2 ?
3°) Il n'y a aucune macro dedans ?
Explique :-)
Edit : En relisant.. je commence à comprendre, mais les données des colonnes ne correspondent pas d'une feuille à l'autre ?
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
13 janv. 2012 à 10:12
13 janv. 2012 à 10:12
effectivement, j'avais simplifié ma demande en gardant la même logique.
Les colonne "langue" en A et "domaine d'activité" en B sont dans les deux fichiers.
Si colonne A et B de la feuille 1 = colonne A et B de la feuille 2 alors, on copie à partir de la colonne C jusqu'à la dernière colonne de la feuille 2 à partir de la colonne T de la feuille 1
En espérant avoir été plus clair :)
Les colonne "langue" en A et "domaine d'activité" en B sont dans les deux fichiers.
Si colonne A et B de la feuille 1 = colonne A et B de la feuille 2 alors, on copie à partir de la colonne C jusqu'à la dernière colonne de la feuille 2 à partir de la colonne T de la feuille 1
En espérant avoir été plus clair :)
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 13/01/2012 à 10:45
Modifié par lermite222 le 13/01/2012 à 10:45
Manque encore un truc.. sur quel ligne ?
La première ligne vide ? soit la 102 sur le fichier que tu m'a passer et continuer ensuite avec la 103,104...
Essaye d'être précis svp.
A ce propos, tu a eu le mail ?
La première ligne vide ? soit la 102 sur le fichier que tu m'a passer et continuer ensuite avec la 103,104...
Essaye d'être précis svp.
A ce propos, tu a eu le mail ?
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
13 janv. 2012 à 11:05
13 janv. 2012 à 11:05
oui c'est valable pour toutes les lignes (là ca s'arrête à la ligne 102) mais mon fichier comprends 60.000 lignes.
Je veux juste compléter ma feuille 1 grâce à la feuille 2
Votyre premier programme était presque bon j'ai l'impression car il repérait les lignes mais elles se recopiaient mal pour els autres lignes.
Je veux juste compléter ma feuille 1 grâce à la feuille 2
Votyre premier programme était presque bon j'ai l'impression car il repérait les lignes mais elles se recopiaient mal pour els autres lignes.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
13 janv. 2012 à 11:05
13 janv. 2012 à 11:05
PAS DE DONNÉE PERSO SUR LE FORUM.
A la limite en MP si vraiment nécessaire et si tu y est invité.
Bon, revenons a nos moutons..
Je pense que j'ai bien compris, mais dans la feuille DonnéesMarketing il ne peu pas y avoir de doublon. Je veux dire 2 fois la même chose dans les colonnes A et B de la feuille DonnéesMarketing
A la limite en MP si vraiment nécessaire et si tu y est invité.
Bon, revenons a nos moutons..
Je pense que j'ai bien compris, mais dans la feuille DonnéesMarketing il ne peu pas y avoir de doublon. Je veux dire 2 fois la même chose dans les colonnes A et B de la feuille DonnéesMarketing
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
13 janv. 2012 à 11:12
13 janv. 2012 à 11:12
non c'est impossible (il n'y a pas de doublons si l'on tient compte uniquement des colonnes A et B.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 13/01/2012 à 11:34
Modifié par lermite222 le 13/01/2012 à 11:34
Sub RapatrieDonnee() Dim Lig1 As Long, Lig2 As Long Dim Wks As Worksheet Set Wks = Sheets("DonnéesMarketing") With Sheets("BaseDeDonnées") Application.ScreenUpdating = False Stop For Lig1 = 2 To .[A65536].End(xlUp).Row For Lig2 = 2 To Wks.[A65536].End(xlUp).Row If .Cells(Lig1, "A") = Wks.Cells(Lig2, "A") And .Cells(Lig1, "B") = Wks.Cells(Lig2, "B") Then Wks.Range("C" & Lig2 & ":Q" & Lig2).Copy .Range("T" & Lig1) .Range("AH" & Lig1).WrapText = False End If Next Lig2 Next Lig1 End With Application.ScreenUpdating = True End Sub
Essaye, je pense que c'est la bonne :-))
J'ai juste empêché que les lignes ne fassent 3 centimètres de haut.
Si tu ne veux pas tu supprime la ligne .Range("AH" & Lig1).WrapText = False
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
13 janv. 2012 à 11:40
13 janv. 2012 à 11:40
ouiiiiiiiii :) ca marche !!!
Mes félicitations, c'est plutôt balèze :)
Un grand merci pour le temps que vous y avez passé.
Je ne sais pas si ce fût complexe pour vous mais en tout ca c'est du beau travail
Merci pour tout
A très bientôt
Mathieu
Mes félicitations, c'est plutôt balèze :)
Un grand merci pour le temps que vous y avez passé.
Je ne sais pas si ce fût complexe pour vous mais en tout ca c'est du beau travail
Merci pour tout
A très bientôt
Mathieu
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 13/01/2012 à 12:35
Modifié par lermite222 le 13/01/2012 à 12:35
Le plus complexe ça a été de te soutirer les informations.... :-)))
Sinon le code est tout simple.
A bientôt.
Edit : Tu peu supprimer le stop y sert plus à rien.
Sinon le code est tout simple.
A bientôt.
Edit : Tu peu supprimer le stop y sert plus à rien.