Bienvenue dans ce tutoriel dédié à la suppression des doublons dans les ComboBox
et ListBox
dans VBA. Les ComboBox
et ListBox
sont des contrôles couramment utilisés dans les formulaires (Excel, Access,…) pour afficher des listes d'éléments (textuels ou numériques). Cependant, il est fréquent que des doublons apparaissent dans ces listes, ce qui peut nuire à la lisibilité et à l'efficacité de votre application.
Dans ce tutoriel, je vous montrerai comment éliminer les doublons des ComboBox
et ListBox
pour créer des listes plus propres et plus cohérentes. Je vous proposerai deux procédures "prêtes à l'emploi" qui utilisent le contrôle à "nettoyer" comme argument – une pour les ListBox
et une pour les ComboBox
. Et vous trouverez également dans ce tutoriel les exemples de codes VBA qui illustrent l'utilisation de ces deux procédures.
Que vous cherchiez à améliorer l'apparence de vos interfaces utilisateur ou à optimiser les performances de votre application, ce tutoriel vous fournira les codes nécessaires pour maîtriser la suppression des doublons dans les ComboBox
et ListBox
en VBA.
Sommaire
Procédure VBA pour supprimer les doublons dans ListBox
Voici donc la procédure pour les ListBox
. Il vous suffit de la copier/coller telle quelle dans votre projet VBA.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub ListBoxSupprimerDoublons(MaListBox) 'par Excel-Malin.com ( https://excel-malin.com/ ) Dim i As Integer Dim j As Integer If MaListBox.ListCount < 2 Then Exit Sub For i = 0 To MaListBox.ListCount - 1 For j = i + 1 To MaListBox.ListCount - 1 If MaListBox.ListCount = j Then Exit For If MaListBox.List(i) = MaListBox.List(j) Then MaListBox.RemoveItem j j = j - 1 End If Next j Next i End Sub |
Pour votre information: le fonctionnement est le suivant – le code fait une boucle pour chacune des lignes de la ListBox
. Et à l'intérieur de cette boucle, une autre boucle parcours toutes les valeurs suivantes. Et si un doublon est trouvé, il est supprimé de la liste.
Exemple d'utilisation pratique de la procédure ListBoxSupprimerDoublons
Maintenant, voici un exemple pratique. Le code suivant rempli la ListBox
nommée "MaListe" se trouvant sur le formulaire "UserForm1" par différentes valeurs (qui contiennent des doublons). La procédure de "nettoyage" est ensuite appelée. Vous verrez alors que "MaListe" ne contient plus que des valeurs uniques…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Sub ExempleSuppressionDoublonsListBox() Dim MaListe As MSForms.ListBox Set MaListe = UserForm1.MaListe1 'remplacez "UserForm1" par le nom de votre formulaire et "MaListe1" par le nom de votre ListBox 'Ajoute des éléments au ListBox (y compris des doublons) With MaListe .AddItem "Article A" .AddItem "Article B" .AddItem "Article A" .AddItem "Article A" .AddItem "Article C" .AddItem "Article D" .AddItem "Article C" End With ' Appel la procédure ListBoxSupprimerDoublons pour supprimer les doublons Call ListBoxSupprimerDoublons(MaListe) End Sub |
Procédure VBA pour supprimer les doublons dans ComboBox
Et maintenant la procédure pour une ComboBox
. Elle fonctionne sur le même principe que celle pour la ListBox
…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub ComboBoxSupprimerDoublons(MaComboBox) 'par Excel-Malin.com ( https://excel-malin.com/ ) Dim i As Integer Dim j As Integer If MaComboBox.ListCount < 2 Then Exit Sub For i = 0 To MaComboBox.ListCount - 1 For j = i + 1 To MaComboBox.ListCount - 1 If MaComboBox.ListCount = j Then Exit For If MaComboBox.List(i) = MaComboBox.List(j) Then MaComboBox.RemoveItem j j = j - 1 End If Next j Next i End Sub |
Exemple d'utilisation de la procédure ComboBoxSupprimerDoublons
Et voici l'exemple d'utilisation. Simple et efficace!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Sub ExempleSuppressionDoublonsComboBox() Dim MaCombo As MSForms.ComboBox Set MaCombo = UserForm1.MaCombo1 'Remplacez "UserForm1" par le nom de votre UserForm contenant la ComboBox et "MaCombo1" par le nom de votre ComboBox 'Ajoute des éléments au ComboBox (y compris des doublons) With MaCombo .AddItem "Article 1" .AddItem "Article 2" .AddItem "Article 1" .AddItem "Article 3" .AddItem "Article 4" .AddItem "Article 4" .AddItem "Article 3" End With ' Appel de la procédure ComboBoxSupprimerDoublons pour supprimer les doublons Call ComboBoxSupprimerDoublons(MaCombo) End Sub |
Remarque pratique
Les deux procédures utilisent des boucles imbriquées. En cas de listes très longues, cela pourrait se sentir sur les performances. Il serait alors opportun de considérer l'utilisation d'une autre méthode, par exemple une Collection ou un Dictionnaire.
Conclusion
J'espère que ce tutoriel vous aidera à mieux comprendre comment supprimer les doublons dans les ComboBox
et ListBox
dans VBA. Grâce à ce guide, vous devriez être capable de créer des interfaces utilisateur plus efficaces, lisibles et esthétiques en éliminant les doublons dans ces contrôles.
N'oubliez pas que maîtriser VBA et ses nombreuses fonctionnalités vous permettra de créer des applications plus puissantes et polyvalentes. Je vous encourage à continuer à explorer et à approfondir vos connaissances en VBA pour tirer le meilleur parti de cet outil et améliorer vos compétences en développement.
Pour aller plus loin en VBA
Et voici une sélection d'articles sur VBA qui pourraient vous être utiles…
- Liste de toutes les fonctions disponibles en VBA
- Manipulation des fichiers en VBA
- Comment utiliser RECHERCHEV en VBA
- La structure Dictionnaire en VBA
- Code VBA pour envoyer un email
- Ouvrir un fichier en VBA (n'importe quel type de fichier, pas seulement un classeur Excel)