Algo de tri en VBA -> affecter une place en fonction du score

znmile

XLDnaute Nouveau
Bonjour à tous...

J'ai un peu honte de demander votre aide là dessus alors qu'il y a des tonnes de sujets similaire, mais je n'arrive pas à l'adapter à mon cas...

Mon classeur est en fait une feuille de calcul de point pour jeu de carte. A la fin de chaque tour, je clique sur un bouton pour passer au suivant et faire mes calculs et tests. il y a une colonne par joueur. dans chaque colonne, une cellule affiche le total de point.

Mon but: pouvoir afficher dans une cellule de chaque colonne : 1er, 2ieme ... etc. en fonction de la valeur du total de point (le premier est celui avec le moins de point, et ainsi de suite).

de plus, il y a n nombre de joueurs (renseigné au début du jeu).

Je ne maitrise pas (encore) les tableaux en VBA pour faire du tri a bulle. peut être pouriez vous me filer un petit coup de pouce pour me lancer sur une piste? ou un problème similaire?

Merci d'avance!
 

MichD

XLDnaute Impliqué
Re : Algo de tri en VBA -> affecter une place en fonction du score

Bonjour,

Une façon de faire un tri.

Prend les données de la colonne A et les transcrit vers la colonne B


VB:
Sub test()
Dim Tblo As Variant, Rg As Range

With Worksheets("Feuil1")
    Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Tblo = Application.Transpose(Rg)
Quick_Sort Tblo, LBound(Tblo), UBound(Tblo)
Rg.Offset(, 1).Resize(UBound(Tblo)) = Application.Transpose(Tblo)
Set Rg = Nothing

End Sub
'-----------------------------------------------

Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last As Long)
Dim Low As Long, High As Long
Dim Temp As Variant, List_Separator As Variant
Low = First
High = Last
List_Separator = SortArray((First + Last) / 2)
Do
    Do While (SortArray(Low) < List_Separator)
        Low = Low + 1
    Loop
    Do While (SortArray(High) > List_Separator)
        High = High - 1
    Loop
    If (Low <= High) Then
        Temp = SortArray(Low)
        SortArray(Low) = SortArray(High)
        SortArray(High) = Temp
        Low = Low + 1
        High = High - 1
    End If
Loop While (Low <= High)
If (First < High) Then Quick_Sort SortArray, First, High
If (Low < Last) Then Quick_Sort SortArray, Low, Last
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 317
Membres
102 862
dernier inscrit
Emma35400