Trier une liste et éliminer les doublons

Dans un userform, je reprends les données d'une liste ; Comment trier cette listbox sans toucher à celle d'origine et en éliminant les doublons ?

Supposons que tu as dans un classeur
- une feuille nommée MaListe sur laquelle tu as ta liste d'origine.
- une feuille nommée Feuil2 sur laquelle tu vas copier la liste présente sur MaListe
- un Userform1 avec une zone de liste ListBox1
Dans le code ci-dessous, à l'initialisation du formulaire :
1 - les données de la liste "épurée" sur la feuille Feuil2 sont effacées
2 - les données de la liste "brute" sur la feuille MaListe sont copiées sur la feuille Feuil2 à partir de A1
3 - Ces données sont ensuite triées
4 - les doublons trouvés sont supprimés
5 - la nouvelle liste est sélectionnée
6 - on définit son "adresse"
7 - on applique cette adresse à la propriété RowSource de ListBox1

Option Explicit 
Private sub UserForm_Initialize()
 If
 Sheets("Feuil2").Range("A2").Value <> "" Then
  Sheets("Feuil2").Select
 
 Range("A1", Range("A1").End(xlDown)).Select
  Selection.ClearContents
 End
 If
 Dim Plage_Nette
 Sheets("MaListe").Select
 Range("A1",
 Range("A1").End(xlDown)).Select
 Selection.Copy
 Sheets("Feuil2").Select
 
 Range("A1").Select
 ActiveSheet.Paste
 Selection.Sort Key1:=Range("A1"),
 Order1:=xlAscending,
 Orientation:=xlTopToBottom
 Dim i
 For i = 1 To
 Selection.Cells.Count
 If Cells(i + 1, 1).Value = Cells(i, 1).Value Then
 
 Cells(i + 1, 1).EntireRow.Delete
 End If
 Next i
 Sheets("Feuil2").Range("A1",
 Range("A1").End(xlDown)).Select
 Plage_Nette = Selection.Address(True, True,
 xlA1, True)
 UserForm1.ListBox1.RowSource = Plage_Nette
 end sub

Auteur :

Mots clefs associés à cette page : , , , ,