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

Comparaison croisée colonnes

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

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

Re : Comparaison croisée colonnes

Bonjour Rjcb le forum
merci à Laetitia pour la macro 😱 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:
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
 
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🙁
 
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
 
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
 
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
 
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

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:
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
 
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

- 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
5
Affichages
832
Réponses
15
Affichages
637
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
270
Réponses
10
Affichages
630
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…