[Résolu] Doublons Combobox sur feuille excel (sans userform)

lolo62000

XLDnaute Junior
Bonjour,
j'essaye déséspéremment de retirer les doublons dans une combobox directement sur une feuille, sans userform.
J'ai réussi avec le code suivant à la remplir, en utilisant la propriété ListFillRange

Private Sub Worksheet_Activate()
TEST = Range("D" & Rows.Count).End(xlUp).Row
ActiveSheet.ComboBox3.ListFillRange = "Présentation!D6:D" & TEST
End Sub

J'ai ensuite supprimé les valeurs de ListFillRange, et essyé ce code, pour une combobox remplie sans doublons:

Private Sub Worksheet_Activate()
For i = 6 To Sheets("Présentation").Range("D65536").End(xlUp).Row
ComboBox3 = Sheets("Présentation").Range("D" & i)
If ComboBox3.ListIndex = -1 Then ComboBox3.AddItem Sheets("Présentation").Range("D6" & i)
Next i
End Sub


Malheureusement avec le deuxième code ma combobox ne se remplit même plus. :(
Une petite idée ce qui n'est pas correct.

Merci pour votre aide,
Bonne journée.

Laurent.

 

Jacky67

XLDnaute Barbatruc
Bonjour,

Private Sub Worksheet_Activate()
For i = 6 To Sheets("Présentation").Range("D65536").End(xlUp).Row
ComboBox3 = Sheets("Présentation").Range("D" & i)
If ComboBox3.ListIndex = -1 Then ComboBox3.AddItem Sheets("Présentation").Range("D6" & i)
Next i
End Sub
Bonjour,
Ceci n'est pas bon
Range("D6" & i)
Ce serait plutôt
Range("D" & i)

Essaye comme ceci:
Code:
Private Sub Worksheet_Activate()
    Dim i As Long
    With Sheets("Présentation")
        .ComboBox3.Clear
        For i = 6 To .Cells(.Rows.Count, "D").End(xlUp).Row
            .ComboBox3.AddItem .Range("D" & i)
        Next i
    End With
End Sub

Salutations
JJ
 

lolo62000

XLDnaute Junior
Salut Jacky67,

j'ai testé ta macro. Elle remplit bien la combobox, mais elle n'élimine pas les doublons.
Voici un exemple que j'ai créé vite fait pour tester le code.
Merci.

Laurent.
 

Pièces jointes

  • Cbx_doublon.xlsm
    34.2 KB · Affichages: 48

Jacky67

XLDnaute Barbatruc
Salut Jacky67,

j'ai testé ta macro. Elle remplit bien la combobox, mais elle n'élimine pas les doublons.
Voici un exemple que j'ai créé vite fait pour tester le code.
Merci.

Laurent.
Re..
Je te conseille d'utiliser la méthode "dictionary" comme le préconise Pierrejean, bien plus approprié.
Rendre visible toutes les données avant de remplir les 'ComboBox'
Essaye comme ceci (pour le ComboBox3)
Code:
Private Sub Worksheet_Activate()
ComboBox3.Value = "Sélectionner..."
ComboBox1.Value = "Sélectionner..."
ComboBox2.Value = "Sélectionner..."
If FilterMode Then ShowAllData
'*************
'*************
Set dico = CreateObject("Scripting.dictionary")
For n = 6 To Range("D" & Rows.Count).End(xlUp).Row
  X = Range("D" & n)
  dico(X) = X
Next
ActiveSheet.ComboBox3.List = dico.keys
End Sub

JJ
 

Discussions similaires

Réponses
6
Affichages
227

Statistiques des forums

Discussions
312 094
Messages
2 085 244
Membres
102 833
dernier inscrit
Hassna