Tri automatique dans l’ordre du classement

Bonjour à tous,

Dans un précédent message, h2so4 indiquait comment dans un classement départager par un critère les candidats à égalité.

Ceci donne le tableau joint.

Maintenant pour une lecture directe des résultats il serait intéressant que les lignes du tableau se présentent dans l’ordre du classement.

Est-il possible d’automatiser le tri des lignes du tableau joint dans l’ordre du classement ?

Merci de votre aide

48departage.xlsx (9.01 Ko)

Bonjour,

utilise la fonction "enregistrer la macro" et tu le fais manuellement en selectionnant tes données avec les titres ensuite tu vas dans données trier et tu tries par classement ensuite tu coupe l'enregistrement et la macro est écrite automatiquement, ça donne quelque chose comme ça qu'il faut sûrement adapter en fonction de ton fichier original :

Sub Macro2()

Range("A4:E16").Select

ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("D4:D9"), _

SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Feuil1").Sort

.SetRange Range("A3:E9")

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

End Sub


Bonjour,

utilise la fonction "enregistrer la macro" et tu le fais manuellement en selectionnant tes données avec les titres ensuite tu vas dans données trier et tu tries par classement ensuite tu coupe l'enregistrement et la macro est écrite automatiquement, ça donne quelque chose comme ça qu'il faut sûrement adapter en fonction de ton fichier original :

Sub Macro2()

Range("A4:E16").Select

ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("D4:D9"), _

SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Feuil1").Sort

.SetRange Range("A3:E9")

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

End Sub

Bonjour

L'événement déclencheur est la saisie du nombre de victoires en colonne C

Code de Feuil1

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C4", Range("C4").End(xlDown))) Is Nothing Then
Call Tri
End If
End Sub

Code dans un module

Sub Tri()
    Dim LastRow As Long
    LastRow = ActiveSheet.Range("D4").End(xlDown).Row
    Range("A4:E" & LastRow).Sort Key1:=Range("D4"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub

Cordialement

29departage.zip (13.63 Ko)

Bonjour à tous et merci de votre aide,

J'ai effectué différents tests à partir de la macro d' Amadéus.

Un exemple :

Je prends ANTOINE lui donne 3 points et 0 victoire.

Sa rangée passe normalement en dernière position

Si le lui redonne ses 10 points et 4 victoires, il est bien classé premier au départage, mais il ne remonte qu’en seconde position.

La sélection des cellules prend une allure bizarre

Si je valide à nouveau son nombre de victoires en colonne C, tout rentre dans l’ordre.

A moins que ce point puisse être corrigé, je me demande s'il ne vaut pas mieux trier manuellement que de valider plusieurs fois certaines cellules.

Pour l'instant, je reste à votre écoute.

Bonjour

Voudrais-tu essayer de nouveau sur ce fichier s'il te plait?

Cordialement

38departage.zip (13.68 Ko)

Certainement, Amadéus, que je veux bien essayer ce nouveau fichier.

A présent tout rentre dans l'ordre.

Il me semble que ta correction porte sur le code dans un module où ta sélection débute à la ligne 3 au lieu de 4 antérieurement.

J'ai bien enregistré mon fichier au format xlsm pour qu'il puisse prendre en charge la macro

Je crois comprendre que lorsque j'élargirai la liste des participants il faudra éditer l'instruction "A3:E"

Merci beaucoup

Rechercher des sujets similaires à "tri automatique ordre classement"