Suppression de doublons sur plusieurs colonnes

1 Comment

Voici un exemple de l’utilisation de l’objet “System.Collections.ArrayList”. Dans cet exemple, on va utiliser cet objet pour supprimer des doublons disposés en plusieurs colonnes.

Supposons que l’on a un tableau avec les noms de personnes qui sont dans des équipes. Chaque équipe a trois personnes. Dans notre tableau de données, les noms des membres sont parfois mélangés et dupliqués. Par exemple, la combinaison “Albert-Benoit-Claude” est identique à “Claude-Albert-Benoit” ou “Benoit-Albert-Claude” ou toute autre permutation similaire. On veut éliminer les doublons afin de connaître le nombre exact d’équipes.

ALexemple

Comme on peut le voir dans l’image ci-dessous, on a 5 équipes différentes.

Le code ci-dessous permet d’éliminer les doublons et d’afficher les résultats dans un autre onglet.

Résultat :
(Noter que les noms d’équipe ont été ajouté manuellement faciliter la compréhension)
ALexemple2

Le code

C’est ici que la magie s’opère…

Explication du code :

Ligne 7: On met en mémoire notre plage de cellules
Ligne 9: On crée notre objet ArrayList
Ligne 10: On crée notre objet Dictionary
Ligne 14 à 17: On ajoute les éléments des colonnes A, B et C dans notre ArrayList.
Ligne 18 : On trie par ordre alphabétique notre liste à l’aide de .Sort (beaucoup plus rapide que de faire un tri avec un “BubbleSort” par exemple). On trie notre liste afin de trouver les doublons. Par exemple, B-A-C ou B-C-A ou C-B-A deviendront A-B-C.
Ligne 19 : On crée un chaîne de texte temporaire, exemple Albert|Benoit|Claude.
Ligne 20 à 26 : Si la valeur temporaire n’existe pas dans notre dictionnaire, on l’ajoute. On ré-écrit ensuite les valeurs dans notre tableau (ar) et se servant de la variable “n” comme compteur.
Ligne 29 à 30 : On écrit le résultat dans un autre onglet après avoir effacé les données. On copie le contenu de notre tableau (ar) dans l’onglet. Le nombre de lignes à copier est déterminé à l’aide de notre compteur “n”

Voici donc un exemple de l’utilisation de 2 objets très puissants : “Scripting.Dictionary” et “System.Collections.ArrayList”. Le premier est assez connu, surtout car il permet de générer des liste sans doublons. Le deuxième nous offre la possibilité de faire un tri alphabétique très facilement.

L’utilisation de l’objet “System.Collections.ArrayList” mérite d’être étudiée…. D’autres exemples suivront sûrement.

Vous avez aimé cet article, partagez-le dans vos réseaux sociaux!

One comment on “Suppression de doublons sur plusieurs colonnes

  1. Boisgontier on said:

    Avec Dictionary seulement:

    Sub SansDoublons()
    Set d = CreateObject(“Scripting.Dictionary”)
    a = [A2:E9]
    For i = LBound(a) To UBound(a)
    If Not d.exists(a(i, 5)) Then
    d.Item(a(i, 5)) = Array(a(i, 1), a(i, 2), a(i, 3), a(i, 5))
    End If
    Next i
    [g2].Resize(d.Count, UBound(a, 2)) = Application.Transpose(Application.Transpose(d.items))
    End Sub

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Les balises HTML ne sont pas autorisés.