Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

recherche dans 2 fichiers les lignes ayant un champs en commun

  • Initiateur de la discussion Initiateur de la discussion chrisdu73
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

chrisdu73

XLDnaute Occasionnel
Bonjour,

Ayant deux fichiers avec la même structure, même champs mais valeurs différentes (sauf sur une colonne Ref.client en A).
Je voulais savoir si c'était possible de créer un troisième fichier avec les lignes qui on en commun la Ref client en A ?

Merci pour votre aide la dessus
 
Re : recherche dans 2 fichiers les lignes ayant un champs en commun

Bonjour chrisdu73,

Il faudrait voir vos 2 fichiers, mais vous pouvez essayez cette macro dans le 3ème fichier :

Code:
Sub ClientsCommuns()
Dim plage1 As Range, plage2 As Range, r As Range, lig&, mlig&
Set plage1 = Workbooks("Fichier1.xls").Sheets("Feuil1").UsedRange 'noms à adapter
Set plage2 = Workbooks("Fichier2.xls").Sheets("Feuil1").UsedRange 'noms à adapter
Application.ScreenUpdating = False
Cells.Clear 'RAZ
For Each r In plage1.Rows
  If Application.CountIf(plage2.Columns(1), r.Cells(1)) Then
    lig = lig + 1
    r.Copy Cells(lig, 1)
  End If
Next
mlig = lig + 1 'mémorise
For Each r In plage2.Rows
  If Application.CountIf(plage1.Columns(1), r.Cells(1)) Then
    lig = lig + 1
    r.Copy Cells(lig, 1)
  End If
Next
Rows(mlig).Delete 'facultatif, supprime la 2ème ligne de titres
End Sub
Nota 1 : Fichier1 et Fichier2 doivent être ouverts et le 3ème fichier doit être le classeur actif.

Nota 2 : on pourrait terminer la macro par un tri sur la 1ère colonne, à vous de voir.

A+
 
Re : recherche dans 2 fichiers les lignes ayant un champs en commun

Un grand merci à toi, ça fonctionne parfaitement tu es un as.
Mais j'ose te demander si cela est possible aussi:
Toujours en commun la colonne A des 2 fichiers, mais pouvoir choisir via un listbox 1 critère de sélection sur la colonne Q qui contient un nombre.
Cela m’éviterais de préparer un fichier pour comparer, comme dans la 1ère demande
Avec ton aide du premier poste, je prenais un fichier et j’effaçais tout se qui n'avais pas la valeur 1 dans la colonne Q de façon à avoir un fichier de référence, mais si avec ma deuxième demande, il y aurai un listbox qui me demande la valeur en Q du fichier ça serai le top, ou mieux encore, qui me demande que comparer en fichier 1 et en fichier 2 ?
Alors là je serai au ange grâce a toi.
 
Re : recherche dans 2 fichiers les lignes ayant un champs en commun

Re,

Ici une InputBox permet d'indiquer le NUMERO de la colonne de comparaison :

Code:
Sub ClientsCommuns()
Dim plage1 As Range, plage2 As Range, n%, r As Range, lig&, mlig&
Set plage1 = Workbooks("Fichier1.xls").Sheets("Feuil1").UsedRange 'noms à adapter
Set plage2 = Workbooks("Fichier2.xls").Sheets("Feuil1").UsedRange 'noms à adapter
n = Val(InputBox("Entrez le NUMERO de la colonne de comparaison :"))
If n < 1 Or n > plage1.Columns.Count Then Exit Sub
Application.ScreenUpdating = False
Cells.Clear 'RAZ
For Each r In plage1.Rows
  If Application.CountIf(plage2.Columns(1), r.Cells(n)) Then
    lig = lig + 1
    r.Copy Cells(lig, 1)
  End If
Next
mlig = lig + 1 'mémorise
For Each r In plage2.Rows
  If Application.CountIf(plage1.Columns(1), r.Cells(n)) Then
    lig = lig + 1
    r.Copy Cells(lig, 1)
  End If
Next
Rows(mlig).Delete 'facultatif, supprime la 2ème ligne de titres
End Sub
A+
 
Re : recherche dans 2 fichiers les lignes ayant un champs en commun

Merci beaucoup pour avoir répondu si vite, mais c'est pas juste une sélection de la colonne que j'aurai voulu, mais d'indiquer la valeur de comparaison qui se trouve en colonne Q.
Mais encore une fois c'est trop gentil de m'avoir aider si vite
 
Re : recherche dans 2 fichiers les lignes ayant un champs en commun

Re,

Pour éviter de tourner en rond, joignez les fichiers (allégés) avec une feuille montrant le résultat escompté.

Bonne fin de soirée.
 
Re : recherche dans 2 fichiers les lignes ayant un champs en commun

Ben voilà les fichiers en exemple.
 

Pièces jointes

Re : recherche dans 2 fichiers les lignes ayant un champs en commun

Bonjour chrisdu73,

Merci pour les fichiers, on peut maintenant travailler correctement.

Dans Module1 du fichier Résultat(1) mettre cette macro paramétrée :

Code:
Sub ClientsCommuns(n As Variant)
Dim plage1 As Range, plage2 As Range, lig&, r As Range, mlig&
On Error Resume Next
Set plage1 = Workbooks("EX2010.xls").Sheets("Exportation").UsedRange 'noms à adapter
Set plage2 = Workbooks("EX2011.xls").Sheets("Exportation").UsedRange 'noms à adapter
If Err Then MsgBox "'EX2010.xls' et 'EX2011.xls' doivent être ouverts...": Exit Sub
lig = 1
Application.ScreenUpdating = False
[2:65536].Clear 'RAZ
For Each r In plage1.Rows
  If Application.CountIf(plage2.Columns(1), r.Cells(1)) And _
    r.Cells(17) = n Or r.Cells(17) = "NB" Then
    lig = lig + 1
    r.Copy Cells(lig, 1)
  End If
Next
mlig = lig + 1 'mémorise
For Each r In plage2.Rows
  If Application.CountIf(plage2.Columns(1), r.Cells(1)) And _
    r.Cells(17) = n Or r.Cells(17) = "NB" Then
    lig = lig + 1
    r.Copy Cells(lig, 1)
  End If
Next
If Cells(mlig, 17) = "NB" Then Rows(mlig).Delete 'facultatif, supprime la 2ème ligne de titres
End Sub
Elle est appelée par cette macro dans le code de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$D$1" Then Exit Sub
ClientsCommuns [D1]
End Sub
En D1 se trouve une liste de validation permettant de choisir une valeur en colonne Q.

Les 3 fichiers sont joints.

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
567
Réponses
5
Affichages
402
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…