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

XL 2019 Classement par critere

LE BLEVEC

XLDnaute Junior
Bonjour
Faire un classement
en prenant que les 3 premier de chaque catégorie et rajouter 1-2-3, si que 1 dans la catégorie mettre 1 si que 2 mettre 1-2
et ça sur tout
je les ai déja trié par epreuve, categorie et point
mais apres je ne sais pas faire
j'ai mis un exemple a droite
je souhaiterais avec formules
je joint le fichier
merci de votre aide
 

Pièces jointes

  • export_complet_tir_competition_505_28122024.xlsx
    32 KB · Affichages: 18

alexga78

XLDnaute Occasionnel
Bonsoir à tous, et meilleurs vœux pour 2025,

Une autre proposition Power Query pour gérer les ex aequo potentiels (classement par ordre alphabétique).


PowerQuery:
let
A = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
B = (x)=> Table.SelectColumns(Table.Sort(Table.FirstN(Table.AddRankColumn(x, "Id", {"Total",1}, [RankKind = 1]),3), {{"Id", 0}, {"Nom",0}}), {"Id"} & Table.ColumnNames(A)),
C = Table.Combine(Table.RemoveLastN(Table.Group(A, {"Catégorie E", "Epreuve"}, {"x", B}))[x])
in C
 

LE BLEVEC

XLDnaute Junior
Bonjour JOB et meilleurs vœux
si possible en colonne C inverser le trier (de Z à A)
et aussi si c'est possible de mettre le total de l'équipe
j'ai fait un petit exemple en colonne O
merci
 

Pièces jointes

  • Excel downloads 2.xlsm
    46.1 KB · Affichages: 2
  • Excel downloads 2.xlsm
    46.1 KB · Affichages: 2

job75

XLDnaute Barbatruc
Bonjour LE BLEVEC,

Bonne année à vous aussi.
VB:
Sub Classer()
Dim d As Object, lig&, i&, crit$, h As Byte
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
Application.ScreenUpdating = False
[H:O].Clear 'RAZ
With [A1].CurrentRegion
    .Columns(6).NumberFormat = "0.0"
    .Columns(6).Replace ".", ".", xlPart 'convertit la colonne
    .Sort .Columns(3), xlDescending, .Columns(4), , xlAscending, .Columns(6), xlDescending, Header:=xlYes 'tri sur 3 colonnes
    .Columns(5).Insert xlToRight 'colonne auxiliaire
    .Columns(5) = "=RC[-2]&RC[-1]"
    .Columns(5) = .Columns(5).Value 'supprime les formules
    lig = 1
    For i = 2 To .Rows.Count
        crit = .Cells(i, 3) & .Cells(i, 4)
        If .Cells(i, 3) <> "" And Not d.exists(crit) Then
            d(crit) = ""
            .AutoFilter 5, crit 'filtre automatique
            .Copy .Cells(lig, 10) 'copier-coller
            .AutoFilter 'ôte le filtre
            .Cells(lig, 10).Resize(, 7).Clear 'supprime les titres
            .Cells(lig + 1, 10).CurrentRegion.Resize(, 7).Offset(3).Clear 'ne garde que 3 lignes
            .Cells(lig + 1, 9) = 1
            If .Cells(lig + 2, 10) <> "" Then .Cells(lig + 2, 9) = 2
            If .Cells(lig + 3, 10) <> "" Then .Cells(lig + 3, 9) = 3
            h = Application.Max(.Cells(lig + 1, 9).Resize(3))
            .Cells(lig + 1, 17) = "=SUM(RC[-1]:R[" & h - 1 & "]C[-1])"
            lig = lig + h + 1
        End If
    Next
    .Columns(14).Delete xlToLeft
    .Columns(5).Delete xlToLeft 'supprime la colonne auxiliaire
End With
End Sub
Edit : [H:O].Clear 'RAZ

A+
 

Pièces jointes

  • Excel downloads 2.xlsm
    36.3 KB · Affichages: 2
Dernière édition:

LE BLEVEC

XLDnaute Junior
Parfait merci encore
il y a une chose que j'ai oublé de vous dire c'est qu'il faut 3 tireurs pour faire une équipe
ça se complique !!!!!!!! car il faut que les tireurs soit du meme club et de la meme catégorie
je joint un exemple (c'st vrai j'ai manqué de précision)
Camille
 

Pièces jointes

  • PALM-EQUI.pdf
    384.6 KB · Affichages: 5

job75

XLDnaute Barbatruc
Bonjour LE BLEVEC, le forum,

il faut que les tireurs soit du meme club et de la meme catégorie

si le fitrage n'en donne que se soit 1 ou 2 il n'y a pas d'équipe il en faut 3

OK donc on ne garde que les filtrages d'au moins 3 éléments :
VB:
Sub Classer()
Dim d As Object, lig&, i&, crit$
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
Application.ScreenUpdating = False
[H:O].Clear 'RAZ
With [A1].CurrentRegion
    .Columns(6).NumberFormat = "0.0"
    .Columns(6).Replace ".", ".", xlPart 'convertit la colonne
    .Sort .Columns(3), xlDescending, .Columns(4), , xlAscending, .Columns(6), xlDescending, Header:=xlYes 'tri sur 3 colonnes
    .Columns(6).Insert xlToRight 'colonne auxiliaire
    .Columns(6) = "=RC[-3]&RC[-2]&RC[-1]"
    .Columns(6) = .Columns(6).Value 'supprime les formules
    lig = 1
    For i = 2 To .Rows.Count
        crit = .Cells(i, 3) & .Cells(i, 4) & .Cells(i, 5)
        If .Cells(i, 3) <> "" And Not d.exists(crit) Then
            d(crit) = ""
            .AutoFilter 6, crit 'filtre automatique
            If Application.CountA(.Columns(3).SpecialCells(xlCellTypeVisible)) > 3 Then
                .Copy .Cells(lig, 10) 'copier-coller
                .Cells(lig, 10).Resize(, 7).Clear 'supprime les titres
                .Cells(lig + 1, 10).CurrentRegion.Resize(, 7).Offset(3).Clear 'ne garde que 3 lignes
                .Cells(lig + 1, 9) = 1
                .Cells(lig + 2, 9) = 2
                .Cells(lig + 3, 9) = 3
                .Cells(lig + 1, 17) = "=SUM(RC[-1]:R[2]C[-1])"
                lig = lig + 4
            End If
            .AutoFilter 'ôte le filtre
        End If
    Next
    .Columns(15).Delete xlToLeft
    .Columns(6).Delete xlToLeft 'supprime la colonne auxiliaire
End With
End Sub
A+
 

Pièces jointes

  • Excel downloads 2.xlsm
    37.4 KB · Affichages: 3

Discussions similaires

Réponses
1
Affichages
273
Réponses
15
Affichages
620
Réponses
4
Affichages
740
Réponses
33
Affichages
2 K
Réponses
2
Affichages
494
Réponses
5
Affichages
320
Réponses
11
Affichages
503
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…