Listbox1 sans doublon

  • Initiateur de la discussion Initiateur de la discussion bmhx60
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

bmhx60

Guest
Bonjour a tous,

Avez vous une idée pour eviter les doublons dans une listBox1.
J'utilise le code suivant :

Private Sub UserForm_Activate()
Dim i As Integer
For i = 1 To Sheets("Base MP").Range("B65535").End(xlUp).Row
If Sheets("Base MP").Cells(i, 2).Value = ActiveCell.Offset(0, -1).Value Then
ListBox1.AddItem (Sheets("Base MP").Cells(i, 1).Value)
End If
Next
End Sub


Merci d'avance de votre aide.

@+
 
Re : Listbox1 sans doublon

Bonjour

Une solution parmi d'autres basée sur l'unicité dans une collection
Code:
Dim i As Integer
Dim erreur As Boolean
Dim coll As New Collection
For i = 1 To Sheets("Base MP").Range("B65535").End(xlUp).Row
If Sheets("Base MP").Cells(i, 2).Value = ActiveCell.Offset(0, -1).Value Then
    erreur = False
    On Error GoTo suite
    coll.Add (Sheets("Base MP").Cells(i, 1).Value), CStr((Sheets("Base MP").Cells(i, 1).Value))
    If erreur = False Then
        ListBox1.AddItem (Sheets("Base MP").Cells(i, 1).Value)
    End If

End If
On Error GoTo 0
Next
Exit Sub
suite:
erreur = True
Resume Next
End Sub

A tester

JP
 
Re : Listbox1 sans doublon

Bonjour,

Méthode rapide 0,1s pour 10.000 lignes

Code:
  Set f = Sheets("BD")
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Range(f.[A2], f.[A65000].End(xlUp))
   If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
  Next c
  Me.ComboBox1.List = MonDico.items

http://boisgontierjacques.free.fr/pages_site/formulairelistesansdoublons.htm

JB
 
Dernière édition:
Re : Listbox1 sans doublon

Bonjour bmhx60
En l'adaptant a ton cas je pense que se code peut être intéressant
Cordialement.
JPS
Private Sub UserForm_Initialize()
For i = 1 To Sheets(1).[A65000].End(xlUp).Row
Me.ComboBox1 = Sheets(1).Cells(i, "A") ' on se positionne dans le combobox
If Me.ComboBox1.ListIndex = -1 Then ' Existe t-il?
Me.ComboBox1.AddItem Sheets(1).Cells(i, "A")
End If
Next i
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
664
Réponses
5
Affichages
913
Réponses
15
Affichages
788
Réponses
2
Affichages
528
Retour