recherche dans 2 fichiers les lignes ayant un champs en commun

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
 

job75

XLDnaute Barbatruc
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+
 

chrisdu73

XLDnaute Occasionnel
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.
 

job75

XLDnaute Barbatruc
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+
 

chrisdu73

XLDnaute Occasionnel
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
 

chrisdu73

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

Ben voilà les fichiers en exemple.
 

Pièces jointes

  • EX2010.xls
    40 KB · Affichages: 52
  • Résultat.xls
    39.5 KB · Affichages: 46
  • EX2011.xls
    47 KB · Affichages: 42
  • EX2010.xls
    40 KB · Affichages: 55
  • Résultat.xls
    39.5 KB · Affichages: 53
  • EX2011.xls
    47 KB · Affichages: 42
  • EX2010.xls
    40 KB · Affichages: 57
  • Résultat.xls
    39.5 KB · Affichages: 51
  • EX2011.xls
    47 KB · Affichages: 40

job75

XLDnaute Barbatruc
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

  • Résultat(1).xls
    49.5 KB · Affichages: 47
  • Résultat(1).xls
    49.5 KB · Affichages: 40
  • Résultat(1).xls
    49.5 KB · Affichages: 39
  • EX2010.xls
    40 KB · Affichages: 42
  • EX2010.xls
    40 KB · Affichages: 41
  • EX2010.xls
    40 KB · Affichages: 39
  • EX2011.xls
    47 KB · Affichages: 39
  • EX2011.xls
    47 KB · Affichages: 36
  • EX2011.xls
    47 KB · Affichages: 30

Discussions similaires

Réponses
6
Affichages
325

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 184
dernier inscrit
Di Martino