' 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
' Atention, 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é
' Clément Marcotte, Daniel Maher,
' Ajouté ou modifié le 11/11/2004 (N°1047)