Quelle instruction pour trier dans une combobox ?

Bonjour

A propos de ce fichier : userform4.xls du cours VBA, comment faire en sorte que les villes soient triées par ordre alphabétique ?

Merci

Au lancement de l'UserForm, nous voulons que les 4 pays soient chargés dans la liste déroulante (avec la méthode AddItem) :

End Sub

Merci pour le lien...

Vu le nombre de questions qui y figurent, cela prouve que ce n'est pas très évident à réaliser....

bonne soirée

bonjour

voila la routine pour trier

    With ComboBox1
        For I = 0 To .ListCount - 1
            For J = 0 To .ListCount - 1
                If .List(I) < .List(J) Then
                    StrTemp = .List(I)
                    .List(I) = .List(J)
                    .List(J) = StrTemp
                End If
            Next J
        Next I
    End With
    

A+

Maurice

Merci pour lui archer

Il est vrai que c'était compliqué

Merci...

Je ne suis inscrit sur ce site que depuis décembre 2017 et je remercie les personnes qui prennent le temps donner des solutions aux débutants dont je fais partie.

Bonjour,

-Pour obtenir un combobox trié, il ne FAUT PAS:

  • Prendre une méthode de tri hyper-lente
  • Trier directement le combobox

Il faut passer par un Array() et utiliser une méthode de tri rapide et non la plus lente comme ci dessus.

http://boisgontierjacques.free.fr/fichiers/Formulaire/FormTriTableurTrie.xls

Option Compare Text
Private Sub UserForm_Initialize()
  Dim temp()
  Set f = Sheets("BD")
  temp = Application.Transpose(f.Range("A2:A" & f.[A65000].End(xlUp).Row))
  Tri temp, LBound(temp), UBound(temp)
  Me.ComboBox1.List = temp
End Sub

Sub Tri(a(), gauc, droi) ' Quick sort
   ref = a((gauc + droi) \ 2)
   g = gauc: d = droi
   Do
     Do While a(g) < ref: g = g + 1: Loop
     Do While ref < a(d): d = d - 1: Loop
     If g <= d Then
       temp = a(g): a(g) = a(d): a(d) = temp
       g = g + 1: d = d - 1
     End If
   Loop While g <= d
   If g < droi Then Call Tri(a, g, droi)
   If gauc < d Then Call Tri(a, gauc, d)
End Sub

Ceuzin

Bonjour

au plus simple

A voir

Private Sub UserForm_Initialize()
' Tri alpha
Col = 1
    With ComboBox1
        .Clear
        .List = Range(Cells(2, Col), Cells(Rows.Count, Col).End(xlUp)).Value
            For I = 0 To .ListCount - 1
                For J = 0 To .ListCount - 1
                    If .List(I) < .List(J) Then
                        StrTemp = .List(I)
                        .List(I) = .List(J)
                        .List(J) = StrTemp
                    End If
                Next
            Next
    End With
End Sub

A+

Maurice

Ce qui est au dessus est un bon exemple de ce qu'il NE FAUT PAS FAIRE (essayer avec 10.000 items)

-Pour 1.000 items, il faut 10 s

Pour 10.000 items, il faut 1000 secondes

  • Prendre une méthode de tri hyper-lente
  • Trier directement le combobox

Ceuzin

Rechercher des sujets similaires à "quelle instruction trier combobox"