Comparaison de deux feuilles sur trois colonnes

  • Initiateur de la discussion Initiateur de la discussion kabamel
  • 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 !

kabamel

XLDnaute Occasionnel
Salut à tous, j'ai un classeur dans lequel il y a deux feuilles "BD1" et "BD2", j'aimerais comparer les 2 feuilles pour recuperer les lignes identiques et les matricules correspondant dans la feuilles "BD2". La clé de comparaison est "Noms et Prenoms", "Père" et "Mère".
Merci pour votre aide.
 

Pièces jointes

Dernière édition:
Re : Comparaison de deux feuilles sur trois colonnes

Hello

Voir PJ pour exemple avec des tables et une formule Sommeprod

sinon, pour ne récuperer QUE les lignes communes (donc sans celles qui apparaissent avec 0)
une solution rapide d'exécution (mais que je ne saurai te faire): les dictionnaires
cf par ici
Objet dictionary
 

Pièces jointes

Re : Comparaison de deux feuilles sur trois colonnes

Re salut,
J'ai vite fait un comparatif entre la solution de JHA (que je salue au passage) et ma solution.
Il y a une différence d'une ligne.
Voir fichier joint pour se rendre compte de la différence.
Les valeurs ont été repérées en jaune
A voir
@+ Lolote83
 

Pièces jointes

Re : Comparaison de deux feuilles sur trois colonnes

Bonjour à tous,

J'ai constaté une erreur dans la feuille BD2?
Il y a deux fois le même nom/prénom avec une réf différente, se qui provoque des bugs!
J'ai préparé un programme en VBA avec Tableaux et Dictionary, qui peut être utile sur des gros fichiers.
Au début, ce programme repère les doublons en BD2 et demande de les supprimer ou modifier et sauvegarder.
Relancer le programme après sauvegarde et verifier le résultat.

Sub idem()
Set f1 = Sheets("BD1")
Set f2 = Sheets("BD2")
Set f3 = Sheets("BD1 - BD2")
Set mondico1 = CreateObject("Scripting.Dictionary")
Set mondico2 = CreateObject("Scripting.Dictionary")
Set mondico = CreateObject("Scripting.Dictionary")
'recherche doublons de col B en BD2
For Each c In f2.Range("b2", f2.[b65000].End(xlUp))
If c <> "" Then mondico.Item(c.Value) = mondico.Item(c.Value) + 1
Next c
lig = 2
For Each c In f2.Range("b2", f2.[b65000].End(xlUp))
If mondico.Item(c.Value) > 1 Then
MsgBox ("Vous avez un doublon de Nom Prénom et colonne B de la feuille BD2" & vbCr & "Corrigez cette erreur en feuille BD2, Sauvez et recommencez le test!" & vbCr & "le nom prénom est: " & c)
Exit Sub
End If
lig = lig + 1
Next c
'*******************************************
a = f1.Range("B2:B" & f1.[b65000].End(xlUp).Row)
b = f2.Range("B2:B" & f2.[b65000].End(xlUp).Row)
tablo1 = f1.Range("A2😀" & f1.[D65000].End(xlUp).Row)
tablo2 = f2.Range("A2😀" & f2.[D65000].End(xlUp).Row)
For i = LBound(a) To UBound(a)
mondico1(a(i, 1)) = ""
Next i
For i = LBound(b) To UBound(b)
mondico2(b(i, 1)) = ""
Next i
pos = 2
For Each c In b
If mondico1.exists(c) Then
If mondico2.exists(c) Then
mondico2(c) = ""
p = Application.Match(c, mondico1.keys, 0)
q = Application.Match(c, mondico2.keys, 0)
For tr = 1 To 4
f3.Cells(pos, tr) = tablo1(p, tr)
Next tr
f3.Cells(pos, 5) = tablo2(q, 1)
pos = pos + 1
End If
End If
Next c
End Sub

A+

René
 

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

Retour