VBA: supprimer les doublons dans ListBox et ComboBox

Bienvenue dans ce tutoriel dédié à la suppression des doublons dans les ComboBox et ListBox en VBA. Que ce soit pour une liste alimentée depuis une plage Excel, un import ou des saisies successives, les doublons nuisent à la lisibilité et à l’expérience. Ci-dessous, vous trouverez 3 méthodes complémentaires: la boucle simple (passe-partout), la Collection (rapide à coder) et le Dictionnaire (efficace sur les grandes listes), avec des options pour ignorer la casse, supprimer les espaces et choisir la colonne de comparaison.

VBA: suppression des doublons dans ListBox / ComboBox

Méthode 1 – Boucle imbriquée (simple et universelle)

La version "classique", améliorée pour être plus robuste (types Long, comparaison maîtrisée, options de normalisation). Ce code est prêt à être ajouter dans votre projet. Vous pouvez simplement le copier / coller tel qu'il est.

Exemple d’utilisation avec ListBox

Exemple d’utilisation avec ComboBox

À savoir : Cette méthode fonctionne partout et ne nécessite aucune référence. Sur de très longues listes, préférez plutôt le Dictionnaire (voir Méthode 3).

Méthode 2Collection (courte et efficace)

La technique consiste à exploiter l'unicité des clés d'une Collection : on tente d'y ajouter chaque valeur avec une clé égale à la valeur normalisée. En cas de doublon, une erreur survient et l'élément n'est pas ajouté une deuxième fois. De cette manière, on se retrouve avec une liste "nettoyée".

Exemple d’utilisation

Attention : en multi-colonnes, l’exemple ci-dessus régénère la première colonne. Si vous devez préserver toutes les colonnes, utilisez la méthode Dictionnaire ci-dessous (stockage des lignes complètes).

Méthode 3Dictionnaire (la plus performante sur grandes listes)

Le Dictionnaire (Scripting.Dictionary) permet un accès clé/valeur très rapide. On l'utilise pour marquer ce que l'on a déjà vu avec une clé basée sur la valeur normalisée. Voir l’article dédié au Dictionnaire.

Exemple d’utilisation avec ListBox multi-colonnes

Bonnes pratiques

Quelques conseils pratiques pour vous éviter des mauvaises surprises quand vous travaillez avec les listes en VBA.

  • Vider la liste avant de la remplir : Ctrl.Clear pour éviter d'empiler des doublons.
  • Normaliser : casse (LCase$), espaces (Trim$), éventuellement remplacer doubles espaces.
  • Choisir la bonne colonne en multi-colonnes (colIndex), selon vos besoins. Sachez que, en VBA, la première colonne a, par défaut, l'index = 0!
  • Sources de données : si vous partez d'une plage Excel, vous pouvez dédupliquer en amont (Power Query, Range.RemoveDuplicates) puis charger la liste.

FAQ rapide

• Dois-je cocher une référence pour le Dictionnaire ?
Non avec la version late-binding (CreateObject("Scripting.Dictionary")), ce n'est pas nécessaire. Si vous préférez le early-binding, cochez la référence "Microsoft Scripting Runtime".

• Comment gérer les valeurs NULL/vides ?
Vous pouvez tester If Len(Trim$(val)) = 0 Then pour les ignorer ou les conserver selon le besoin.

Conclusion

Vous avez maintenant trois approches pour enlever les doublons dans vos ComboBox et ListBox : la boucle (universelle), la Collection (très concise) et le Dictionnaire (rapide sur gros volumes). À vous de choisir celle qui colle le mieux à votre contexte.

VBA: ListBox et ComboBox sans doublons

Pour aller plus loin en VBA

Pour finir, voici encore quelques articles qui pourraient vous être utiles pour votre travail avec VBA…

Laissez un commentaire

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