Résultat macro comparaison colonnes en double

xgaudin

XLDnaute Nouveau
Bonjour,
Pas expert en VBA, j'ai récupéré un code pour comparer les valeurs dans 2 colonnes (A et B) et afficher en colonne C les valeurs identiques mais je voudrais que la valeur trouvée ne s'affiche qu'une fois et non 2 fois en C. Pouvez-vous me dire comment modifier le code ?
Par ailleurs, je voudrais également pouvoir faire la même chose sur d'autres données et dans ce cas il s'agit de comparer les valeurs de 2 colonnes (A = Nom et B= Prénom) avec celles de 2 autres colonnes (C = Nom et D = Prénom) et afficher en E et F les noms et prénoms identiques. Tous les codes trouvés sur le net me proposent d'afficher les valeurs différentes ce qui ne me convient pas (j'ai une dizaine de valeurs identiques pour plusieurs milliers de valeurs comparées). A noter que les colonnes à comparer A/B et C/D n'ont pas le même nombre de lignes.
Merci à vous pour l'aide que vous pourrez m'apporter.
Code initial :
Sub ListeDoublons()
Dim Plage As Range, C As Range
Dim Ligne As Long
With Worksheets("feuille1!")
Ligne = 1
Set Plage = .Range("A1").CurrentRegion
For Each C In Plage
If C <> "" Then
If Application.CountIf(Plage, C) <> 1 Then .Range("C" & Ligne) = C.Value: Ligne = Ligne + 1
End If
Next C
End With
End Sub
 

xgaudin

XLDnaute Nouveau
Re : Résultat macro comparaison colonnes en double

Bonjour,
Ci-joint le fichier
La macro "Comparaison" ne me satisfait pas car va au-delà des lignes avec des valeurs. La macro "Doublons" serait parfaite sans affichage des valeurs en double
Merci par avance
 

Pièces jointes

  • Doublons.xlsm
    49.3 KB · Affichages: 35
  • Doublons.xlsm
    49.3 KB · Affichages: 38

laetitia90

XLDnaute Barbatruc
Re : Résultat macro comparaison colonnes en double

re:)

deja la premiere macro regarderais la 2 qst... dans l'apres midi si personne passe par la:):)

Code:
Sub comparaison()
Dim VA As String, VB As String
For i = 1 To Cells(Rows.Count, 1).End(3).Row
VA = Cells(i, 1) & Cells(i, 2)
For j = 1 To Cells(Rows.Count, 3).End(3).Row
VB = Cells(j, 3) & Cells(j, 4)
If VA = VB Then
MsgBox ("cette personne est présente dans les deux listes => ligne " & j)
End If
Next j: Next i
End Sub
 

laetitia90

XLDnaute Barbatruc
Re : Résultat macro comparaison colonnes en double

re :)
pour la 2

Code:
Sub es()
Dim c As Range, m As Object, n As Object
 Application.ScreenUpdating = 0
 Set n = CreateObject("Scripting.Dictionary")
 Set m = CreateObject("Scripting.Dictionary")
 For Each c In Range("a1:b" & Cells.Find("*", , , , , xlPrevious).Row)
  If m.exists(a & c.Value) And c <> "" Then n(a & c.Value) = ""
  m(a & c.Value) = ""
 Next c
 If n.Count > 1 Then [E1].Resize(n.Count, 1) = Application.Transpose(n.keys)
End Sub
 

laetitia90

XLDnaute Barbatruc
Re : Résultat macro comparaison colonnes en double

re :)

en fin de compte j'ai inverse les questions:(
en fichier joint

Code:
Sub es()
Dim t(), t1(), t2(), i As Long, x As Long, m As Object, z
 Set m = CreateObject("Scripting.Dictionary")
 t2 = Range("a1:b" & Cells(Rows.Count, 1).End(3).Row)
 t = Range("c1:d" & Cells(Rows.Count, 1).End(3).Row)
 For i = 1 To UBound(t2)
 z = t2(i, 1) & t2(i, 2)
 If Not m.Exists(z) Then m.Add z, z
 Next i
 ReDim t1(1 To UBound(t), 1 To 2)
 For i = 1 To UBound(t)
 z = t(i, 1) & t(i, 2)
 If m.Exists(z) Then
 x = x + 1
 t1(x, 1) = t(i, 1): t1(x, 2) = t(i, 2)
 End If
 Next i
 [E1].Resize(x, 2) = t1
End Sub


le post 6 correspond a la premiere qst...
 

Pièces jointes

  • Double_colonnes (1).xlsm
    17.5 KB · Affichages: 37
Dernière édition:

Discussions similaires