Algorithme de tri
Bonjour,
je cherche un algorithme qui fait le tri par autre croissant d'une colonne Excel contenant 8760 Valeurs. J'arrive pas j'ai trouvé un code VBA qui le fait très bien mais je ne veux pas l'utiliser parce-que à chaque fois que je lance la simulation plusieurs onglet Excel circule et xa j'apprécie pas.
Merci de m'aider
je cherche un algorithme qui fait le tri par autre croissant d'une colonne Excel contenant 8760 Valeurs. J'arrive pas j'ai trouvé un code VBA qui le fait très bien mais je ne veux pas l'utiliser parce-que à chaque fois que je lance la simulation plusieurs onglet Excel circule et xa j'apprécie pas.
Merci de m'aider
2 réponses
-
ModérateurBonjour,
L'algo de tri développé par Jacques Boisgontier (sur cette page) est un algorithme de tri rapide (quicksort en Anglais).
Pour en connaitre les bases, vous reportez à ce site
Supposons tes données en colonne A, de A1 à A8760, tu souhaites la restitution en colonne B :
Sub Principale() Dim Tb(), i As Long, Temp() 'REMPLISSAGE DE LA VARIABLE TABLEAU For i = 1 To 8760 ReDim Preserve Tb(i - 1) Tb(i - 1) = Cells(i, 1) Next i 'appel du tri Call tri(Tb, LBound(Tb), UBound(Tb)) 'RESTITUTION A ADAPTER LA COLONNE Range("B1:B8760") = Application.Transpose(Tb) End Sub 'sources : http://boisgontierjacques.free.fr/pages_site/Dictionnaire.htm 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