[calc] Classement par meilleur note obtenue le plus tôt

Bonjour,

Je prépare un classeur pour permettre de suivre un concours où le
classement se fait par le plus grand nombre de points acquis. Chaque
compétiteur pour faire plusieurs tentatives, on départage donc les
ex-aequo en privilégiant ceux qui ont obtenus le plus de point mais le
plus tôt dans leurs tentatives.
Exemple:

Compétiteur Série Points
C1 1 2
C2 1 4
C3 1 2
C4 1 0
C5 1 4
C1 2 3
C1 3 1
C1 4 4
C3 2 2
C4 2 2

Mon classement doit donc être:

Compétiteur Série Points
C2 1 4
C5 1 4
C1 4 4
C3 1 2
C4 2 4

Il faudra que je trouve un autre critère pour départager C2 et C5, mais
c'est un autre problème.

Depuis quelques jours, je jongle avec les RANG, MAX, NB.SI,
GRANDE.VALEUR, PETITE.VALEUR mais je n'arrive pas à trouver les bonnes
combinaisons. Je cherche l'équivalent d'un MAX.SI.
Dans beaucoup d'exemple j'ai vu du SOMMEPROD mais je ne vois pas
comment l'utiliser dans ce cas.

En combinant Points et Série, j'arrive à définir le RANG pour chacune
des lignes mais je ne sais pas supprimer les excédant de ligne d'un
même compétiteur.

Je précise que j'essaye de faire cela par formule, par macro, je pense
que j'y arriverais en parcourant chaque ligne.

Avez-vous des directions de recherche, un nom de fonction, pour
m'aiguiller sur la bonne voie ?

Merci d'avance

Bonjour,

De : Jack.R [mailto:jack.r@free.fr]
Envoyé : mercredi 13 mars 2013 06:48

Je prépare un classeur pour permettre de suivre un concours où le
classement se fait par le plus grand nombre de points acquis. Chaque
compétiteur pour faire plusieurs tentatives, on départage donc les
ex-aequo en privilégiant ceux qui ont obtenus le plus de point mais le
plus tôt dans leurs tentatives.
Exemple:

Compétiteur Série Points
C1 1 2
C2 1 4
C3 1 2
C4 1 0
C5 1 4
C1 2 3
C1 3 1
C1 4 4
C3 2 2
C4 2 2

Mon classement doit donc être:

Compétiteur Série Points
C2 1 4
C5 1 4
C1 4 4
C3 1 2
C4 2 4

Il faudra que je trouve un autre critère pour départager C2 et C5, mais
c'est un autre problème.

Depuis quelques jours, je jongle avec les RANG, MAX, NB.SI,
GRANDE.VALEUR, PETITE.VALEUR mais je n'arrive pas à trouver les bonnes
combinaisons. Je cherche l'équivalent d'un MAX.SI.
Dans beaucoup d'exemple j'ai vu du SOMMEPROD mais je ne vois pas
comment l'utiliser dans ce cas.

En combinant Points et Série, j'arrive à définir le RANG pour chacune
des lignes mais je ne sais pas supprimer les excédant de ligne d'un
même compétiteur.

Je précise que j'essaye de faire cela par formule, par macro, je pense
que j'y arriverais en parcourant chaque ligne.

Je ne vois pas immédiatement une formule, mais avant de chercher plus, il y
a une solution très rapide à partir du résumé des résultats (pts max obtenus
et n° de série correspondant):
Compétiteur pts série
C1 4 4
C2 4 1
C3 2 1
C4 2 2
C5 4 1

Il suffit de faire un tri sur ce tableau (pts décroissants et série
croissante)

Le tableau ci-dessus peut être facilement obtenu à partir des résultats
bruts avec une fonction RECHERCHEV (ou H, selon l'organisation du tableau
des résultats bruts).

Est-ce que ça peut convenir?

Bonne journée,
Michel

Jack.R wrote

Bonjour,

Je prépare un classeur pour permettre de suivre un concours où le
classement se fait par le plus grand nombre de points acquis. Chaque
compétiteur pour faire plusieurs tentatives, on départage donc les
ex-aequo en privilégiant ceux qui ont obtenus le plus de point mais le
plus tôt dans leurs tentatives.
Exemple:

Compétiteur Série Points
C1 1 2
C2 1 4
C3 1 2
C4 1 0
C5 1 4
C1 2 3
C1 3 1
C1 4 4
C3 2 2
C4 2 2

Mon classement doit donc être:

Compétiteur Série Points
C2 1 4
C5 1 4
C1 4 4
C3 1 2
C4 2 4

Voici un exemple de solution possible qui présente l'avantage de mettre à
jour les résultats au fur et à mesure de la compétition en entrant le score
de chaque compétiteur pour chaque série:
classement.ods
<http://nabble.documentfoundation.org/file/n4043482/classement.ods>
L'idée est très simple, je multiplie par 1000 les points max obtenus et je
retranche le n° de la série pour laquelle ce max a été obtenu. J'obtiens
ainsi un score qui correspond au classement souhaité (il faut bien sûr un
nombre de séries inférieur à 1000) - j'ai ainsi le classement correct (avec
les exæquos ayant un rang identique)
Pour obtenir un tableau automatiquement, il me faut arbitrairement classer
les exæquos, ce qui se fait par un autre score utilisant en plus le rang
dans la liste des compétiteurs.
Ceci revient à faire un tri (l'ordre des clés est donné par le poids des
multiplicateurs, et croissant/décroissant par le signe)

Bonne journée,
Michel

Whaoou, j'étais resté figé dans ma présentation de données source.
Ton changement fait que tout devient plus clair.
Merci pour toutes les explications contenues dans le classeur.

La méthode avec le trie, m'imposait de créer une macro pour que cela
soit fait correctement à chaque saisie de nouveau résultat, sachant que
le palmarès doit être affiché dynamiquement et qu'il y a en fait 7 ou 8
concours différents qui se déroulent en simultané ...

Pour la combinaison points/série, je faisais:
points + (100 - série)/10^7
Ta méthode semble plus efficace (moins de calculs).

Merci, je vais pouvoir avancer maintenant et commencer à penser au
formulaire de saisie.