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

2 réponses

  1. Modérateur
    Bonjour,

    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