Comparaison croisée colonnes

rjcb

XLDnaute Occasionnel
Hello,

J'ai récupéré une macro tip top:
Elle compare les colonnes A & B avec les colonnes C & D.

Code:
Sub es()
Dim t(), t1(), t2(), i As Long, x As Long, m As Object, z
 Set m = CreateObject("Scripting.Dictionary")
 t2 = Range("a2:b" & Cells(Rows.Count, 1).End(3).Row)
 t = Range("c2: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
 [E2].Resize(x, 2) = t1
End Sub

Pour être transparent, je n'ai pas bien compris la macro...
Je souhaiterais le même comportement mais au lieu d’afficher les doublons je souhaiterais que la macro affiche les "non doublons"

résultat en pièce jointe :)

Merci à vous
 

Pièces jointes

  • Doublon Colonnes.xlsm
    18.4 KB · Affichages: 47

Paritec

XLDnaute Barbatruc
Re : Comparaison croisée colonnes

Bonjour Rjcb le forum
merci à Laetitia pour la macro :eek: car je pense que c'est d'elle!!!
je ne sais pas si j'ai compris mais peut-être comme ci-dessous pour créer une liste des éléments possible dans les deux colonnes AB et CD
a+
Papou:)
Code:
Sub es()
    Dim t(), t1(), t2(), i As Long, x As Long, m As Object, z
    Set m = CreateObject("Scripting.Dictionary")
    t2 = Range("a2:b" & Cells(Rows.Count, 1).End(3).Row)
    t = Range("c2: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
     For i = 1 To UBound(t)
        z = t(i, 1) & "#" & t(i, 2)
        If Not m.Exists(z) Then m.Add z, z
    Next i
    t = m.keys
    ReDim t1(0 To UBound(t), 1 To 2)
    For i = 0 To UBound(t)
        t1(i, 1) = Split(t(i), "#")(0)
        t1(i, 2) = Split(t(i), "#")(1)
    Next i
    [E2].Resize(UBound(t) + 1, 2) = t1
End Sub
 
Dernière édition:

rjcb

XLDnaute Occasionnel
Re : Comparaison croisée colonnes

Hello,

Ce n'est pas tout a fait cela.
En fait en colonne F je voudrais lister les éléments qui ne sont pas en doublon.
Dans la pièce jointe dans le premier poste j'ai mis le résultat souhaité en colonne F (Les colonnes A C et E seront toujours identiques)

Merci
 

Paritec

XLDnaute Barbatruc
Re : Comparaison croisée colonnes

Bonsoir rjcb le forum
bah oui c'est bien ce que j'ai fait de créer une liste des éléments unique de la colonne AB et CD
il n'y a pas de doublons une liste unique
je vais aller voir ton fichier pour comprendre
a +
Papou:(
 

laetitia90

XLDnaute Barbatruc
Re : Comparaison croisée colonnes

bonjour rjcb , Papou:):)

je pense avoir compris en fait!!! il compare seulement 2 colonnes B & D

Code:
Sub es()
 Dim m As Object, t, k
    Application.ScreenUpdating = 0
    Set m = CreateObject("Scripting.Dictionary")
    t = Range("b2:b" & Cells(Rows.Count, 2).End(3).Row)
    For Each k In t: m(k) = "": Next k
    t = Range("d2:d" & Cells(Rows.Count, 4).End(3).Row)
    For Each k In t
    If m.Exists(k) Then m.Remove (k) Else m(k) = ""
    Next k
    Range("f2").Resize(m.Count, 1) = Application.Transpose(m.keys)
 End Sub
 

gosselien

XLDnaute Barbatruc
Re : Comparaison croisée colonnes

Bonjour (soir,c'est selon) à tous,

une autre proposition sur les colonnes B et D (ce que j'ai aussi compris)

Code:
Sub Solo()
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In [invent] ' place (B2:B7) nommée par facilité de lecture
     MonDico.Item(c.Value) = MonDico.Item(c.Value) + 1
  Next c
For Each c In [vcenter] ' plage (D2:D7) nommée
     MonDico.Item(c.Value) = MonDico.Item(c.Value) + 1
  Next c
  i = 2
  For Each c In MonDico.Keys
    If MonDico(c) = 1 Then
      Cells(i, 8) = c
      i = i + 1
    End If
  Next
End Sub
 

rjcb

XLDnaute Occasionnel
Re : Comparaison croisée colonnes

Hello, (on évite de réfléchir sur le bonjour ou bonsoir :)

Tip top tout fonctionne.
Bon j'ai choisi celui de Laetitia car il me semble avoir compris que la première macro venait d'elle :)

Merci à vous
 

rjcb

XLDnaute Occasionnel
Re : Comparaison croisée colonnes

Alors je viens de tester en profondeur mais il y a un petit souci: -)
Le début se passe bien mais ensuite dans la colonne F (résultat) il m'affiche des valeurs qui sont en doublon...

ex: (tagguées en bleu)
SLATO001I0
SLATO002I0

J'ai vérifié les noms, formats de cellule mais toujours le même problème.
Par ailleurs pour chaque enregistrement non "doublé" et donc inscrit en colonne F, est il possible de coloier la cellule .
(exemple avec du rouge pour les valeurs de la colonne B qui vont en colonne F).
On peut imaginer du violet pour les valeurs de la colonne D qui vont en colonne F

Merci à vous
 

Pièces jointes

  • Comparaison.xlsm
    34 KB · Affichages: 57
  • Comparaison.xlsm
    34 KB · Affichages: 43

Paritec

XLDnaute Barbatruc
Re : Comparaison croisée colonnes

Bonjour Rjcb le forum
Oui tu as des résultats qui sont parfaits.
Si on compare tes deux colonnes on obtient bien le bon résultat contrairement à ce que tu dis!!!
Si maintenant tu retires les espaces qui existent dans ta colonne B devant certain de tes noms ou ref , tu auras le bon résultat c'est sur, mais la macro elle compare alors " ref" c'est pas pareil que "ref" donc la macro ajoute en fait elle fait son boulot.
a+
Papou:)
 
Dernière édition:

gosselien

XLDnaute Barbatruc
Re : Comparaison croisée colonnes

Bonjour,

le résultat du code est pareil pour Laeticia et moi :)
tu as des espaces devant des mots (tu le sais j'espère) et des mots un peu "tarabiscotés", c'eût été plus facile avec moins de données et des mots faciles à repérer non ?

Code:
Sub colorer()
For Each c In [resultat]
  If Not IsError(Application.Match(c.Value, [vcenter], 0)) Then
    c.Interior.ColorIndex = 6
  Else
    c.Interior.ColorIndex = 20
  End If
Next c
For Each c In [resultat]
  If Not IsError(Application.Match(c.Value, [invent], 0)) Then
    c.Interior.ColorIndex = 3
  Else
    c.Interior.ColorIndex = 20
  End If
Next c
End Sub
 

Paritec

XLDnaute Barbatruc
Re : Comparaison croisée colonnes

Re bonjour Rcjb le forum
voilà ton fichier en retour tu ouvres t cliques le bouton et là tu auras ce que tu veux mais il faut traiter tes listes avant
J'espère que :):)Laetitia:):) ne m'en voudra pas trop d'avoir touché à sa macro
a+
Papou:)
 

Pièces jointes

  • Rcjb V1.xlsm
    33 KB · Affichages: 47

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 472
Messages
2 088 710
Membres
103 930
dernier inscrit
Jibo