Bonsoir Phoenix,
Pourquoi mettre en source d'une listbox des valeurs redontantes pour vouloir les supprimer ensuite... D'où viennent tes données source ? si c'est d'une feuille traite d'abord ces données ? non ?
En fait tu n'indiques pas l'utilité de cette listbox dans son contexte...
Il doit bien y avoir un code beaucoup plus propre et moins lourd, car ton userform va en subir les conséquences rien qu'à l'initialisation...
Enfin si çà peut te faire démarrer sur une idée... Ce code va travailler sur deux feuilles,
Il va copier La sheets(1) Range A1 jusqu'à dernière ligne (qui sera donc ta base de données source avec des valeurs redondantes)...
Il va coller puis faire un sort, puis "nettoyer", puis recommencer et recommencer !!! (à cause de la redondance!)
Il va initialiser une listbox qui n'aura pas 10x la même valeur ...
Fais des essais Phoenix, ce n'est qu'un brouillon d'approche, faudrait alléger !!
Private Sub UserForm_Initialize()
Sheets(1).Select
Range("A1", Range("A1").End(xlDown)).Select
Selection.Copy
Sheets(2).Select
Range("A1").Select
ActiveSheet.Paste
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Orientation:=xlTopToBottom
For i = 1 To Selection.Cells.Count
For Each Cell In Selection
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Orientation:=xlTopToBottom
If Cells(i + 1, 1).Value = Cells(i, 1).Value Then
Cells(i + 1, 1).ClearContents
End If
Next
Next i
Sheets(2).Range("A1", Range("A1").End(xlDown)).Select
Source = Selection.Address(True, True, xlA1, True)
UserForm2.ListBox1.RowSource = Source
End Sub
Bon courage
@+Thierry
Bon Courage