XL 2019 faire un top 3

  • Initiateur de la discussion Initiateur de la discussion Mimi1952
  • 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 !

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

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

Dernière édition:
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

Dernière édition:
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

Dernière édition:
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
 
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
 
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
 
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
 
- 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

Discussions similaires

Réponses
16
Affichages
789
Réponses
1
Affichages
698
Retour