Trier un combobox pour faciliter le choix
Bonjour à tous,
J'ai réalisé un petit système d'encodage dans une feuille excel avec des CheckBox et une ComboBox.
Cette ComboBox est remplie avec différentes listes selon la CheckBox choisie (fonctionne très bien, voir code à la fin).
Maintenant je voudrais aller plus loin et faciliter la recherche des éléments de mes listes. Certaines contiennent pas mal de données et je voudrais que lorsque je tape une ou deux lettres la liste se restreint aux éléments contenant ces lettres.
J'ai pris connaissance de l'option MatchEntry des ComboBox mais celle-ci ne me satisfait gère
D'avance merci pour votre contribution,
Sub RemplirComboBox_Click()
Dim selection
selection = Sheets("Feuil2").Range("C4")
Select Case selection
Case Is = 1
Sheets("Feuil1").ComboBox1.List() = Sheets("Feuil2").Range("C5:C13").Value
Case Is = 2
Sheets("Feuil1").ComboBox1.List() = Sheets("Feuil2").Range("D5:D12").Value
Case Is = 3
Sheets("Feuil1").ComboBox1.List() = Sheets("Feuil2").Range("E5:E13").Value
Case Is = 4
Sheets("Feuil1").ComboBox1.List() = Sheets("Feuil2").Range("F5:F13").Value
Case Is = 5
Sheets("Feuil1").ComboBox1.List() = Sheets("Feuil2").Range("G5:G13").Value
Case Is = 6
Sheets("Feuil1").ComboBox1.List() = Sheets("Feuil2").Range("H5:H13").Value
Case Is = 7
Sheets("Feuil1").ComboBox1.List() = Sheets("Feuil2").Range("I5:I13").Value
Case Is = 8
Sheets("Feuil1").ComboBox1.List() = Sheets("Feuil2").Range("J5:J13").Value
Case Is = 9
Sheets("Feuil1").ComboBox1.List() = Sheets("Feuil2").Range("C5:C13").Value
Case Is = 10
Sheets("Feuil1").ComboBox1.List() = Sheets("Feuil2").Range("C5:C13").Value
Case Else
End Select
End SubJ'ai résolu mon problème avec un petit code qui fonctionne très bien.
J'ai creusé et fini par trouver, la méthode n'est p-e pas très académique mais simple à comprendre. Je la poste, on ne sait jamais ca pourra p-e servir à qqun.
Private Sub ComboBox1_Change()
Dim x, y, z, w
Sheets("Formulaire").ComboBox1.List() = VarListe 'variable qui contient tous les items de ma liste
y = Sheets("Formulaire").ComboBox1.ListCount
x = Sheets("Formulaire").ComboBox1.Text
w = Sheets("Formulaire").ComboBox1.List(i)
For i = y - 1 To 0 Step -1
w = Sheets("Formulaire").ComboBox1.List(i)
z = InStr(1, w, x, vbTextCompare)
If z = 0 Then Sheets("Formulaire").ComboBox1.RemoveItem (i)
Next i
End Sub