Tri Listbox trop long

Bonjour,

j'essaye de trier de manière croissante une listbox de 9 colonnes cependant le tri s'effectue trop lentement lorsque le nombre de ligne grandit (+20~). Cependant, j'ai absolument besoin que la fonctionnalité puisse s'appliquer à une liste beaucoup plus grande. Actuellement j'applique un tri à bulle.

ReDim sTemp(UBound(Me.ListBox1.List, 1))
With Me.ListBox1
    For j = LBound(.List) To UBound(.List) - 1 Step 1
            For i = LBound(.List) To UBound(.List) - 1 Step 1
                        If .List(i) > .List(i + 1) Then 'Regle du tri
                            For k = 0 To .ColumnCount - 1
                                    sTemp(k) = .List(i + 1, k)     'tri bulle
                                    .List(i + 1, k) = .List(i, k)
                                    .List(i, k) = sTemp(k)
                            Next k
                        End If
                Next i
           Next j
End With

J'ai également réalisé un tri décroissant.

Quelqu'un n'aurait pas un conseil ou un algo sous le code plus efficace ?

Merci !

Bonjour,

Le conseil de base, c'est de charger la ListBox avec une liste triée et non de trier le contrôle ActiveX. Trier cette liste via un tableau dynamique ou une collection de type "Dictionary " réduira le temps d'exécution.

Bonjour,

Il faut :

  • utiliser un vrai tri.
  • ne pas trier directement le ListBox

Exemple:

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

Boisgontier

Merci à vous deux, c'est exactement ce dont j'avais besoin !

Rechercher des sujets similaires à "tri listbox trop long"