XL 2019 faire un top 3

Mimi1952

XLDnaute Occasionnel
Bonsoir à tous,

J'ai effectuer un classement sportif avec la formule Rang et ça fonctionne bien .Mais je voudrais obtenir
un top 3 , c'est à dire que le nom des 3 premiers apparaissent automatiquement dans une colonne.
Merci pour votre aide

Mic 52
 

Pièces jointes

  • Classeur1.xlsx
    20.7 KB · Affichages: 12

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Mimi1952 :) ,

Une formule matricielle en V9 à recopier vers le bas.

La formule est un peu compliquée car elle tient compte d'éventuelles équipes ex æquo. S'il y a des équipes ex æquo, alors il peut y avoir plus de trois équipes dans le "Top 3" (pour ne pas frustrer d'équipes méritant d'être dans le top 3) => un exemple sur la feuille "Feuil2".

La formule matricielle en V9 à recopier vers le bas :
VB:
=SIERREUR(INDEX(B:B;ARRONDI(1000*MOD(PETITE.VALEUR(SI(R$9:R$14<=ENT(PETITE.VALEUR(R$9:R$14+LIGNE(R$9:R$14)/1000;3));R$9:R$14+LIGNE(R$9:R$14)/1000;"");LIGNES($1:1));1);0));"")

1686429270022.png


edit : + version v1a avec en colonne W une formule ordinaire rappelant le rang (formule en W9 à recopier vers le bas).
 

Pièces jointes

  • Mimi1952- Classement Top 3- v1.xlsx
    18.5 KB · Affichages: 6
  • Mimi1952- Classement Top 3- v1a.xlsx
    18.7 KB · Affichages: 6
Dernière édition:

bsalv

XLDnaute Occasionnel
en suppossant que vous n'avez pas encore 365, peut-être que cette formule est aussi matricielle. J'ai modifié quelque points pour créer des ex æquo's au rang 4
Code:
=STXT(CONCAT(SI($R$9:$R$14=X9;", " & $B$9:$B$14;""));3;99)

Le comptage des points, c'est correct ?
 

Pièces jointes

  • Mimi1952- Classement Top 3- v1.xlsx
    25.2 KB · Affichages: 7
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour,

Une solution VBA :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i
Application.ScreenUpdating = False
Application.EnableEvents = False
With [T9:U14]
    .Columns(1) = [R9:R14].Value
    .Columns(2) = [B9:B14].Value
    .Sort .Cells(1), xlAscending, Header:=xlNo
    .Borders.LineStyle = xlNone
    For i = 1 To .Rows.Count
        If .Cells(i, 1) > 3 Then Exit For
    Next
    .Rows(1).Resize(i - 1).Borders.Weight = xlThin
    .Rows(i).Resize(.Rows.Count) = ""
End With
Application.EnableEvents = True
End Sub
A+
 

Pièces jointes

  • Classeur(1).xlsm
    19.2 KB · Affichages: 6
Dernière édition:

Mimi1952

XLDnaute Occasionnel
Bonjour
avec des formules
j'ai ajouté les valeurs du classement dans la ligne A
Bonjour
avec des formules
j'ai ajouté les valeurs du classement dans la ligne A
Bonjour
avec des formules
j'ai ajouté les valeurs du classement dans la ligne A
Bonsoir CGU2022,
Je vous remerçie , pour votre réponse qui est correcte mais je n'arriver pas la mettre sur la feuill1 pour que tout soit sur la même feuille. Mais je vous suis reconnaissant pour vos conseils.
Cordialement
Mimi 1952
 

Mimi1952

XLDnaute Occasionnel
Bonsoir @Mimi1952 :) ,

Une formule matricielle en V9 à recopier vers le bas.

La formule est un peu compliquée car elle tient compte d'éventuelles équipes ex æquo. S'il y a des équipes ex æquo, alors il peut y avoir plus de trois équipes dans le "Top 3" (pour ne pas frustrer d'équipes méritant d'être dans le top 3) => un exemple sur la feuille "Feuil2".

La formule matricielle en V9 à recopier vers le bas :
VB:
=SIERREUR(INDEX(B:B;ARRONDI(1000*MOD(PETITE.VALEUR(SI(R$9:R$14<=ENT(PETITE.VALEUR(R$9:R$14+LIGNE(R$9:R$14)/1000;3));R$9:R$14+LIGNE(R$9:R$14)/1000;"");LIGNES($1:1));1);0));"")

Regarde la pièce jointe 1172118

edit : + version v1a avec en colonne W une formule ordinaire rappelant le rang (formule en W9 à recopier vers le bas).
Bonsoir mapomme,
Je vous remerçie pour votre réponse qui m'a apporter un grand soulagement de toutes les réponses que j'ai reçus j'ai préférer la votre avec la formule matricielle. (Formule à laquelle je n'avais pas penser).
Merçi pour vos conseils
Cordialement
Mimi1952
 

Mimi1952

XLDnaute Occasionnel
en suppossant que vous n'avez pas encore 365, peut-être que cette formule est aussi matricielle. J'ai modifié quelque points pour créer des ex æquo's au rang 4
Code:
=STXT(CONCAT(SI($R$9:$R$14=X9;", " & $B$9:$B$14;""));3;99)

Le comptage des points, c'est correct ?
Bonsoir bsalv,
Je vous remerçie pour votre réponse qui fonctionne bien , mais j'ai préférer la solution de mapomme avec la formule matricielle.
Cordialement
Mimi1952
 

Mimi1952

XLDnaute Occasionnel
Bonjour,

Une solution VBA :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i
Application.ScreenUpdating = False
Application.EnableEvents = False
With [T9:U14]
    .Columns(1) = [R9:R14].Value
    .Columns(2) = [B9:B14].Value
    .Sort .Cells(1), xlAscending, Header:=xlNo
    .Borders.LineStyle = xlNone
    For i = 1 To .Rows.Count
        If .Cells(i, 1) > 3 Then Exit For
    Next
    .Rows(1).Resize(i - 1).Borders.Weight = xlThin
    .Rows(i).Resize(.Rows.Count) = ""
End With
Application.EnableEvents = True
End Sub
A+
Bonsoir job75
Je vous remerçie pour votre réponse qui fonctionne bien , mais j'ai préférer la solution de mapomme avec la formule matricielle.
Cordialement
Mimi1952
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 220
Membres
103 158
dernier inscrit
laufin