Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion znmile
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Z

znmile

Guest
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!
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…