Comparer 2 colonnes et compter les doublons

Bonjour à tous,

Malgré mes efforts pour résoudre mon problème, je n’y arrive malheureusement pas.

Je mets à votre disposition mon fichier avec le code que j’ai déjà mis en place pour résoudre la partie que je sais faire, j’espère que cette partie du code déjà faite peut-être gardé pour vous éviter d’écrire tout le code dans sa totalité.

Explications :

J’ai une feuille appelée "B_D" qui contient mes données, les données que je travaille avec actuellement se trouve principalement dans la colonne "K " et "N".

Le but du code à mettre en place consiste à faire le travail suivant :

  • Récupérer toutes les données de la colonne "K" (à partir de la 3eme ligne) et ceux de la colonne "N" (à partir de la 3eme ligne aussi) pour les placer les unes en dessous des autres dans la colonne "BA". (Le code pour cette étape est existant et fonctionnel).
  • Créer une liste sans doublons à partir des colonnes "K" et "N" et mettre cette liste à la colonne "BA". (Le code pour cette étape est existant et fonctionnel).

Juste pour votre information, mes données dans les trois colonnes sont importantes, principalement la colonne "BA" qui contient 21200 lignes.

  • C’est ici que je n’arrive pas à résoudre mon problème !!!!!!

Voilà ce que j’aimerais faire :

Comparer chaque élément de la colonne "BB" pour le comparer avec tous les éléments de la colonne "K", si l’élément se répète dans la colonne "K" on comptabilise (compteur = compteur + 1)

Exemple : Le premier élément (876-039/2009F) se trouvant à la 2e ligne de la colonne "BB", se répètent 120 fois dans la colonne "K", alors on va indiquer ce nombre (120) dans la colonne "BC" à la même ligne que l’élément (876-039/2009F) de la colonne "BB" (donc 2e ligne).

Lorsque la comparaison et le comptage sont terminés, on place tous les nombres trouvés dans la colonne "BC" à leurs lignes respectives.

Ensuite, je fais la même chose avec tous les éléments de la colonne "BB" à comparer avec les éléments de la colonne "N" et placer tous les nombres trouvés dans la colonne "BD"

Lorsque ce travail est fini, je recommence la même chose mais cette fois je compare les éléments de la colonne "BB" avec ceux de la colonne "BA", les nombres trouvés seront placés dans la colonne "BE".

Je reste à votre disposition pour d’autres informations supplémentaires.

Salutations.

Bonjour à tous !

Compte tenu de ma compréhension du besoin (), je vous livre cette approche via Power Query :

La source du traitement Power Query est le tableau structuré inséré dans la feuille "B_D".

EDIT : Power Query nécessite un complément gratuit à installer pour Excel 2010 et 2013. Nativement intégré dans les versions postérieures)

Bonjour Harzer, le forum,

Pas certain d'avoir compris la demande...

Sur la feuille test:

  1. En colonne A (K + N (sans doublons)), j'inscris les données des colonnes K et N sans doublons
  2. En colonne B (NB dans K), j'inscris le nombre de fois qu'elles apparaissent en colonne K
  3. En colonne C (NB dans N), j'inscris le nombre de fois qu'elles apparaissent en colonne N

Cordialement,

Bonjour xorsankukai, JFL et le Forum,

Comme j’ai téléchargé le fichier de xorsankukai en premier, je l’ai testé et je lui répond en premier

D’abord merci pour votre réponse.

Vous avez bien compris ma demande car le code répond au ¾ de ma demande, il reste la partie qui correspond à envoyer les résultats dans la colonne D de la feuille test.

  • En colonne A (K + N (sans doublons)), j'inscris les données des colonnes K et N sans doublons.

J’ai testé, le résultat est correct.

  • En colonne B (NB dans K), j'inscris le nombre de fois qu'elles apparaissent en colonne K.

J’ai testé aussi cette partie, le résultat est correct.

  • En colonne C (NB dans N), j'inscris le nombre de fois qu'elles apparaissent en colonne N.

J’ai testé également cette 3e partie du code et c’est parfait.

Il reste à faire la colonne D --> En colonne D (NB dans BA), Inscrire le nombre de fois qu’elles apparaissent en colonne BA.

GRAND merci pour le travail déjà effectué et bravo pour cette belle programmation. Je reste admiratif de votre disponibilité et du partage de votre savoir.

Je me presse maintenant de télécharger le travail de JFL pour le tester.

Salutations.

Re,

Bonjour JFL,

@ Harzer : Merci pour le retour,

En colonne D (NB dans BA), Inscrire le nombre de fois qu’elles apparaissent en colonne BA.

Cordialement,

Bonjour JFL, xorsankukai et le forum

Ici, je vais répondre à JFL.

Pour commencer merci pour votre proposition, je ne connaissais pas le Power Query.

Votre proposition donne le bon résultat mais j’ai toutefois une question à vous poser :

Il faut savoir que mes colonnes "K" et "N" ont une longueur variable.

Pour mes tests, j’ai changé moi-même la longueur des données dans la colonne "K", en lui ajoutant dix lignes supplémentaire, comment faire dans ce cas pour que le tableau final avec les nombres de comptage des doublons puisse faire le calcul automatiquement et tenir compte des lignes ajoutées à la colonne "K".

Bien à vous.

Bonjour à tous de nouveau !

@xorsankukai : Hello !

Si la source (ie le tableau structuré) évolue, une simple actualisation (Menu "Actualiser tout") devrait être suffisante pour prendre en considération dans les différents tableaux les ajouts/modifications apportés.

Bonjour xorsankukai, JFL et les autres membres du forum,

Je viens de finir de tester la dernière mise à jour de xorsankukai. Les résultats obtenus sont corrects et répondent à mes attentes.

Merci également à JFL pour les explications pour l’actualisation de l’ensemble des données.

Merci à vous deux pour votre soutiens et disponibilité.

Cordiale poignée de mains.

Bonsoir à tous !

Je vous remercie de ce retour.

Bonjour à tous,

Je rouvre ce post malgré que la solution que xorsankukai m’a proposé me convient et répond totalement à mes attentes.

Si je le rouvre, c’est vraiment par simple curiosité, à savoir :

J’ai trouvé un code que j’ai travaillé un peu afin qu’il puisse répondre à mes attentes comme le code que xorsankukai m’a proposé, la seule différence c’est ce code ne place pas ses résultats aux emplacements voulus dans les colonnes "B" et "C", j’ai beau essayé d’ajouter une condition pour placer les résultats aux placements prévues mais je n’y arrive pas. Je serais curieux de savoir comment vous allez vous y prendre.

J’ai mis un tableau avec le résultat souhaité (En rouge) dans la feuille "test".

Si toutefois pas de solution apportée, ce n’est pas grave, j’ai déjà une réponse de xorsankukai (que je remercie encore) qui me convient parfaitement.

Salutations à tous.

5mondico.xlsm (25.61 Ko)

Bonsoir Harzer, le forum,

Vois si ceci peut t'aider...

Je ne suis pas un grand spécialiste des dico....mais le résultat semble correct...

12harzer-mondico.xlsm (26.92 Ko)

Cordialement,

re,

si on compte tout dans un seul dictionaire, il faut le faire comme-ça

Sub CompteItems()
     Dim d, Dict, i, n, Arr

     Set Dict = CreateObject("Scripting.Dictionary")
     Dict.CompareMode = vbTextCompare

     For i = 1 To 3     'boucle les 3 colonnes
          Select Case i
               Case 3: d = Sheets("B_D").Range("BA2:BA" & Sheets("B_D").Range("BA" & Rows.Count).End(xlUp).Row).Value
               Case 1: d = Sheets("B_D").Range("K2:K" & Sheets("B_D").Range("K" & Rows.Count).End(xlUp).Row).Value
               Case 2: d = Sheets("B_D").Range("N2:N" & Sheets("B_D").Range("N" & Rows.Count).End(xlUp).Row).Value
          End Select

          For n = LBound(d) To UBound(d)     'boucle les données
               If Not Dict.exists(d(n, 1)) Then     'ce clef n'existe pas encore
                    ReDim Arr(3)     'RAZ et dimensioner Arr
                    Arr(0) = d(n, 1)     'l'élément 0 est le clef
               Else
                    Arr = Dict(d(n, 1))     'le contenu de l'item de ce clef dans le dictionaire
               End If
               Arr(i) = Arr(i) + 1    'incrementer l'élément i
               Dict(d(n, 1)) = Arr     'actualiser le résultat dans le dictionaure
          Next
     Next

     '######################################################################################
     With Worksheets("Test").Range("A2")
          .Resize(100, 4).ClearContents 'RAZ plage
          If Dict.Count > 1 Then 'au minimum 2 entrées !!!
               With .Resize(Dict.Count, 4)
                    .Value = Application.Index(Dict.items, 0, 0) 'le contenu des items
                    .Sort .Range("A1"), Header:=xlNo 'trier la colonne A
               End With
          End If
     End With

Bonjour à tous,

BsAlv : on compte tout dans un seul dictionnaire

Alors là, , du grand art !

Merci pour ce partage,

Cordialement,

Bonjour BsAlv, xorsankukai et tous les membres,

J’ai pris le temps de faire mes tests avec mes données réelles.

Un grand MERCI à tous les deux,

Vos propositions me donnent totalement satisfaction et répondent à mes attentes.

Cordiale poignée de mains.

Rechercher des sujets similaires à "comparer colonnes compter doublons"