Etablir un classement en fonction de deux colonnes

Bonjour, plus que novice en la matière je souhaiterai automatiser et établir dans ma colonne "H" un classement en fonction tout d'abord de la colonne "I" qui représente les nombre de parties gagnées et de la colonne "G" qui représente le goal-average. Donc le premier serait celui qui a gagné le plus de parties et en cas d'égalité avec le plus fort goal-average et ainsi de suite. Je vous remercie pour votre aide.

Salut Eric,

- vu les n° d'inscrits en [A:A], je ne vois pas trop l'utilité de la colonne 'CLT' ;
- j'ai mis en [H2] une formule, pas extraordinaire, mais bon

=SI(ET(B2<>"";NBVAL(C2:F2)=4);A2;"")

- un double-clic en [H1] démarre le tri. Comme tu as dit "et ainsi de suite", je fais un tri total sur toutes les colonnes concernées.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
If Not Intersect(Target, Range("H1")) Is Nothing Then _
    Cancel = True: _
    Application.ScreenUpdating = False: _
    Range("B1:I" & Range("C" & Rows.Count).End(xlUp).Row).Sort _
        key1:=Range("E2"), order1:=xlDescending, _
        key2:=Range("D2"), order2:=xlDescending, _
        key3:=Range("C2"), order3:=xlDescending, _
        Orientation:=xlTopToBottom, Header:=xlYes
    Range("B1:I" & Range("C" & Rows.Count).End(xlUp).Row).Sort _
        key1:=Range("I2"), order1:=xlDescending, _
        key2:=Range("G2"), order2:=xlDescending, _
        key3:=Range("F2"), order3:=xlDescending, _
        Orientation:=xlTopToBottom, Header:=xlYes
    Application.ScreenUpdating = True
'
End Sub

Je vois que tu as Excel 2003 : j'espère que ça ira...

18ericbtz.xlsm (43.92 Ko)


A+

Bonsoir curulis57 et merci d'essayer de me trouver une solution.

Ma colonne A:A représente l'ordre des numéros d'inscriptions qui varie tout le temps d'une manifestation à une autre, et c'est pour cela qu'elle existe car elle me sert également pour le tirage des parties (en clair j'essaie d'automatiser, à ma façon, un concours de pétanque en quatre parties, et de simplifier la tache par quelques formules d'où ma requête....) et donc la colonne "CLT" serait la colonne du classement obtenu en fonction des résultats....des colonnes "I" et "G"...

Bonjour Eric

Un exemple de ce que l'on peut faire voir les commentaires dans le fichier

Nouvelle version modifié a 17H12

Cordialement

Re Bonjour je te joins une nouvelle version qui correspond plus à tes besoins

sachant que tu te sers de cette feuille pour faire les tirages

25ericbtz-v2.zip (46.50 Ko)

Merci beaucoup pour ces propositions

Salut Eric,
Salut Joco,

ainsi, alors ?
La colonne [A:A] est intégrée dans le tri et le classement numérique s'affiche en [H:H].
Toujours un double-clic sur "CLT" pour démarrer la macro.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim iRow%
'
If Not Intersect(Target, Range("H1")) Is Nothing Then _
    Cancel = True: _
    iRow = Range("C" & Rows.Count).End(xlUp).Row: _
    Application.ScreenUpdating = False: _
    Range("A1:I" & iRow).Sort _
        key1:=Range("E2"), order1:=xlDescending, _
        key2:=Range("D2"), order2:=xlDescending, _
        key3:=Range("C2"), order3:=xlDescending, _
        Orientation:=xlTopToBottom, Header:=xlYes: _
    Range("A1:I" & iRow).Sort _
        key1:=Range("I2"), order1:=xlDescending, _
        key2:=Range("G2"), order2:=xlDescending, _
        key3:=Range("F2"), order3:=xlDescending, _
        Orientation:=xlTopToBottom, Header:=xlYes: _
    Range("H2").Value = 1: _
    Range("H2").Resize(iRow - 1, 1).DataSeries rowcol:=xlColumns, Type:=xlDataSeriesLinear, step:=1, stop:=iRow - 1
    Application.ScreenUpdating = True
'
End Sub
11ericbtz.xlsm (47.09 Ko)


A+

Rechercher des sujets similaires à "etablir classement fonction deux colonnes"