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" & 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.
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
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.
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.
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