Listbox alimenté avec une extraction sans doublon

Je voudrais alimenter un listbox avec des noms contenu dans une colonne. Il y a des noms répétés et je n'en veux qu'un exemplaire. De plus il y a dans cette colonne le mot "utilisateur" que je ne dois pas prendre en compte.

Cette routine, qui ignore les cellules vides et les valeurs d'erreur utilise l'objet Dictionnary de l'environnement des scripts.

Private sub UserForm_Initialize() 
Dim Table As Scripting.Dictionary
Dim i&, j&, Valide As Boolean, A As Variant
Set Table = New Scripting.Dictionary
j = 0
With Sheets("toto") ' À adapter
For Each A In .Range("B2:B" & .Range("A1").End(xlDown).Row)
'Vérifie si le nom n'est pas une erreur, n'est pas vide
'n'a pas déjà été récupéré, ne contient pas "utilisateur"
Valide = True
If IsError(A) Then
Valide = False ' on n'y met pas les valeurs d'erreur
ElseIf Len(A) = 0 Then
Valide = False
ElseIf Table.Exists(A.Value) Then
Valide = False
Else ' test spécial
If InStr(LCase(A), "utilisateur") > 0 Then
Valide = False
End If
If Valide Then Table.Add A.Value, j: j = j + 1 'rajoute Next
End With
For i = 0 To Table.Count - 1
Debug.Print Table.Keys(i)
ListBox1.AddItem (Table.Keys(i))
Next i
Set Table = Nothing ' Nettoyage
End sub

Attention, si tu rencontres une erreur au moment de l'exécution du code et que celui-ci s'arrête sur Dim Table as Scripting.Dictionary, dans la Fenêtre VBE(visual basic editor) / barre des menus / outils / références / vérifie bien que "Microsoft scripting Runtime" est coché


Ce mois-ci sur Excelabo

- Pas de nouvelle page.
- 7 pages modifiées.