1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| Sub AjouterDichotomique(Combo As ComboBox, Element As String)
Dim Bas As Long, Haut As Long, Milieu As Long
Dim Position As Long
Bas = 0
Haut = Combo.ListCount - 1
Position = -1 ' Par défaut, ajoute à la fin
' Recherche dichotomique
Do While Bas <= Haut
Milieu = (Bas + Haut) \ 2
If StrComp(Combo.List(Milieu), Element, vbTextCompare) > 0 Then
Haut = Milieu - 1
ElseIf StrComp(Combo.List(Milieu), Element, vbTextCompare) < 0 Then
Bas = Milieu + 1
Else
Position = Milieu ' Trouvé, évite les doublons
Exit Do
End If
Loop
' Si l'élément n'existe pas, insérer à la bonne position
If Position = -1 Then
Position = Bas
Combo.AddItem Element, Position
End If
End Sub
' Exemple d'utilisation
Sub TestAjouterDichotomique()
Dim Combo As ComboBox
Set Combo = UserForm1.ComboBox1 ' Remplacez par votre formulaire/contrôle
' Ajouter des éléments de façon dichotomique
AjouterDichotomique ComboBox1, "Banane"
AjouterDichotomique ComboBox1, "Orange"
AjouterDichotomique ComboBox1, "Pomme"
AjouterDichotomique ComboBox1, "Cerise"
End Sub
Private Sub UserForm_Initialize()
TestAjouterDichotomique
End Sub |
Partager