Accélérer le tri d'une list box

Herve_be 211 Messages postés mercredi 4 août 2010Date d'inscription 15 juillet 2018 Dernière intervention - 4 févr. 2017 à 18:32 - Dernière réponse : Whismeril 11785 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 17 juillet 2018 Dernière intervention
- 5 févr. 2017 à 11:02
Bonjour,
Je trie les éléments d'une list box "List" selon une zone qui commence en position "Offset" et d'une longueur "Length"
Do
Moved = False
For i = 0 To List.ListCount - 2
CurrItem = Mid$(List.List(i), Offset, Length)
NextItem = Mid$(List.List(i + 1), Offset, Length)
If CurrItem < NextItem Then
Moved = True
Temp = List.List(i)
List.List(i) = List.List(i + 1)
List.List(i + 1) = Temp
End If
Next i
Loop Until Moved = False
Ceci fonctionne très bien sauf que le tri est très lent.
Pensez-vous que le fait de copier la list box dans un tableau, trier le tableau puis recopier dans la list box accélérerait le traitement ?
Sinon, autre idée ?
Afficher la suite 

Votre réponse

5 réponses

Whismeril 11785 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 17 juillet 2018 Dernière intervention - 4 févr. 2017 à 18:45
0
Merci
Bonsoir

si tu as une piste, pourquoi ne pas avoir essayé?

Même si VB6 c'est vieux pour moi, il est possible que ce qui allonge le temps de l'algorithme de tri est le fait de faire des Mid$ à répétition.

Tu peux essayer de copier le texte "mélanger" dans ton tableau, par exemple si tu trie à partir du 4eme caractère, au lieu de copier
"Coucou c'est moi!" tu copies "cou c'est moi!Cou".

Après le tri, quand tu recharges la liste tu "démélanges".


Herve_be 211 Messages postés mercredi 4 août 2010Date d'inscription 15 juillet 2018 Dernière intervention - 5 févr. 2017 à 10:00
Avant d'essayer je voulais savoir si ça vaut la peine d'essayer.
Le fait de mettre la zone à trier devant permet de trier sur l'ensemble du string et pas sur un Mid$ : est-ce efficace ?
Whismeril 11785 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 17 juillet 2018 Dernière intervention - 5 févr. 2017 à 11:02
je ne sais pas c'est une idée, il faut tester et chronométrer.
Commenter la réponse de Whismeril
Whismeril 11785 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 17 juillet 2018 Dernière intervention - 4 févr. 2017 à 18:48
0
Merci
Tu peux aussi essayer de changer d'algo de tri, voir le tableau
https://fr.wikipedia.org/wiki/Algorithme_de_tri
Commenter la réponse de Whismeril
vb95 1602 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 13 juillet 2018 Dernière intervention - 5 févr. 2017 à 03:00
0
Merci
bonjour
A adapter pour ton cas vu que ton tri est fonction d'une partie de l'élément de la liste si j'ai bien compris : http://codes-sources.commentcamarche.net/forum/affich-7005642-tri-rapide-quicksort-d-un-tableau-de-chaines-de-caracteres

Le tri QuickSort est l'un des plus rapide
Commenter la réponse de vb95

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.