supprimer les doublons d'une listbox

brux40

XLDnaute Nouveau
Bonjour,

J'ai actuellenment un problème. Je n'arrive pas enlever les doublons d'une listbox dans un userform. Je débute avec VBA.
J'ai déjà réussi en supprimer toutes les lignes vides dans la userform.

Mais la je sèche

Private Sub UserForm_Initialize()

'choix du moteur
Dim i As Range

'efface le contenu de la listbox
ListBoxmodmot.Clear
'avec la feuille base de donnée.
With Sheets("base de donnee")
'ne pas oublié le "." devant range sinon il prend les valeurs de la feuille active
For Each i In .Range("B3:B5000")
If i <> "" Then ListBoxmodmot.AddItem i

Next i
End With

End Sub




Merci d'avance de votre aide
 
G

Guest

Guest
Re : supprimer les doublons d'une listbox

Re,

Dans ces cas là, il faut donner tes tentatives de codes(adaptation de ce que tu as trouvé), pour qu'on puisse te montrer ce qui ne va pas.

Code:
Private Sub UserForm_Initialize()
'choix du moteur
    Dim i As Integer
    Dim Valeurs As Variant
    Dim sDic As Object
    Set sDic = CreateObject("Scripting.Dictionary")
    'efface le contenu de la listbox
    ListBoxmodmot.Clear
    'avec la feuille base de donnée.
    With Sheets("base de donnee")
        'Pour aller plus vite on charge les valeurs dans un tableau
        Valeurs = .Range("B3:B5000").Value
        For i = LBound(Valeurs) To UBound(Valeurs)
            If Not IsEmpty(Valeurs(i, 1)) Then sDic(Valeurs) = ""
        Next i
    End With
    If IsArray(Valeurs) Then ListBoxmodmot.List = Valeurs
End Sub
A+
 
Dernière modification par un modérateur:

brux40

XLDnaute Nouveau
Re : supprimer les doublons d'une listbox

Dim i As Integer
Dim Valeurs As Variant
Dim sDic As Object
Set sDic = CreateObject("Scripting.Dictionary")
'efface le contenu de la listbox
ListBoxmodmot.Clear
'avec la feuille base de donnée.
With Sheets("base de donnee")
'Pour aller plus vite on charge les valeurs dans un tableau
Valeurs = .Range("B3:B5000").Value
For i = LBound(Valeurs) To UBound(Valeurs)
If Not IsEmpty(Valeurs(i, 1)) Then sDic(Valeurs) = ""
Next i
End With
If IsArray(Valeurs) Then ListBoxmodmot.List = Valeurs
 
G

Guest

Guest
Re : supprimer les doublons d'une listbox

Re,

voici qui est corrigé, mais tu n'as pas du lire la charte du forum correctement, sinon tu aurais joint un fichier exemple représentant ton problème. Cela nous aurait évité de tourner en rond. J'ai du créer moi-même l'exemple pour me rendre compte de l'erreur!!!!!

Code:
Private Sub UserForm_Initialize()
 'choix du moteur
     Dim i As Integer
     Dim Valeurs As Variant
     Dim sDic As Object
     Set sDic = CreateObject("Scripting.Dictionary")
     'efface le contenu de la listbox
     ListBoxmodmot.Clear
     'avec la feuille base de donnée.
     With Sheets("base de donnee")
         'Pour aller plus vite on charge les valeurs dans un tableau
         Valeurs = .Range("B3:B5000").Value
         For i = LBound(Valeurs) To UBound(Valeurs)
             If Not IsEmpty(Valeurs(i, 1)) Then sDic(Valeurs(i, 1)) = ""
         Next i
     End With
     If IsArray(Valeurs) Then ListBoxmodmot.List = sDic.keys
 End Sub

A+
 

Discussions similaires

Réponses
9
Affichages
694

Statistiques des forums

Discussions
312 382
Messages
2 087 838
Membres
103 667
dernier inscrit
datengo