Se connecter avec
S'enregistrer | Connectez-vous

Classement sous Excel

Dernière réponse : dans Programmation

Bonjour à tous,

J'ai vu quelques posts sur le sujet, mais aucun ne m'a permis de résoudre mon problème.

Pour la réalisation de compétitions, je cherche à faire un classement.

Ce sont des courses de 6 pilotes ; Chaque pilote fait 3 manches de qualification

Au bout de ces 3 manches, les 48 meilleurs sont qualifiés.

Je fait donc un classement en fonction du nombre de points totalisés : Pour cela j'utilise une macro tri.

J'aimerai que ce classement tienne compte du nombre de meilleure place car de la façon dont c'est fait pour l'instant, si 2 ou 3 pilotes ont le même nombre de points, l'élément qui les départagera sera leur numéro de plaque de course. Le n°4 sera avant le 13, avant le 54, etc...


Exemple :

MANCHES------ Run 1 -- Run2 -- Run 3
Dossard 1-------- 1 ------- 2 ------ 2
Dossard 2-------- 3 ------- 1 ------ 1



Les 2 pilotes ont tous les deux 5 points, mais le dossard n°2 a 2 victoires. Il doit donc être classé avant le dossard 1. Or avec une simple fonction tri je ne peux pas integré cet argument.

Comment faire ? La fonction RANG ne m'a rien apporté.

En vous remerçiant

Autres pages sur : classement excel

Lassé par la pub ? Créez un compte

:hello: 
En rajoutant un bout de code à ta macro, la gestion des exaequos ne pose pas de problème si tu gère simplement les meilleures places de chaque concurrent, mais avant de te donner un petit bout de code, un cas me chagrine.
Que fais-tu dans ce cas là ? :

MANCHES------ Run 1 -- Run2 -- Run 3
Dossard 1-------- 1 ------- 4 ------ 6
Dossard 2-------- 5 ------- 5 ------ 1

sans doute 1 ? (meilleure deuxième manche)

et celui-ci ? :

MANCHES------ Run 1 -- Run2 -- Run 3
Dossard 1-------- 2 ------- 3 ------ 1
Dossard 2-------- 1 ------- 2 ------ 3

sans doute numéro du dossard ?

Cela peut te paraitre tout bête comme question mais je préfère partir sur les mêmes bases que toi avant de t'envoyer une ébauche, pour que tu me dises par la suite, ah oui mais ???

Si j'ai bien compris fais moi signe ou à quelqu'un d'autre, la soluce n'est pas compliquée.

A bientôt.

Tu soulèves 2 problèmes effectivement :

- Dans le 1 er cas, il n'y a pas de souci, puisqu'on prend le nombre de meilleure place, donc dossard 1 effectivement puisque il est 1 et 4 alors que le dossard 2 est 1 et 5.
- Dans le 2ème cas, c'est en fait, en deuxième intention, la meilleure place de la dernière manche qui détermine celui qui est qualifié. Parfois si 4 ou 5 pilotes se retrouvent exaequo, il arrive que nous refassions courir une manche pour les départager.

Il serait donc intéressant que j'ai un visuel d'avertissement lorsque ce cas arrive : par exemple les cases de résultat se colorent en rouge


Merci pour votre disponibilité :hello: 

Coucou
Bon alors voilà, ci-après le lien pour récupérer mon fichier (je n'ai pas transformé le tien, mais le but est de te donner mon idée, tu vas voir ce n'est pas compliqué à mettre en place, par contre à expliquer :pt1cable:  )

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

La problèmatique était le classement de courses (cf posts précédents)
Je me suis basé sur mes vieux souvenirs scolaires (et oui ça sert :lol: ) concernant les arbres je crois, enfin bref.
Je m'excuse auprès des mathématiciens pour les termes employés ci-après car on va clairement parler de vulgarisation scientifique.

Pour un chemin 1-->4-->6 on fait dans un premier temps le total soit 1+4+6 = 11, ensuite on effectue un total que je vais appelé "chargé", c'est à dire que chaque noeud reprend le poids du noeud précédent :??:  :??: 
en clair 1-->4-->6 nous donne 1 --> 4 + 1 --> 6 + (4+1) soit 1 --> 5--> 11 total 1 + 5 + 11 = 17 je vais appelé ce nombre le nombre magique.

Pour nos trois courses cela correspond à
nbmagique = min(3_runs) + (2ème run + min(3_runs)) + (max(3_runs) + 2ème run + min(3_runs))
sachant que 2ème run = total_runs - min(3_runs)-max(3_runs) après simplification on obtient

nbmagique = 2 * total_runs + min(3_runs) - max(3_runs)

Tout ça pour vous montrer d'où je sors ma formule sous excel (je n'avais pas envie de la donner telle quelle mais en me relisant est-ce tellement plus clair ????)

Revenons à excel.
On va donc calculer pour chacun de nos pilotes son total des trois courses, son nb magique (je sais pas où j'ai été chercher ce terme :D  )
que l'on va stocker dans une colonne à coté (il faudra juste la masquer dans la feuille)
Ce nombre pour un total runs équivalents sera plus petit pour le concurrent ayant des meilleurs runs.

ex:
MANCHES------ Run 1 -- Run2 -- Run 3 -- Total -- NbMag -- Classement
Dossard 1-------- 1 ------- 1 ------ 6 -------- 8 ------- 11 ---------- 1
Dossard 2-------- 5 ------- 2 ------ 1 -------- 8 ------- 12 ---------- 2
Dossard 3-------- 3 ------- 2 ------ 3 -------- 8 ------- 15 ---------- 4
Dossard 4-------- 2 ------- 2 ------ 4 -------- 8 ------- 14 ---------- 3

Il suffit donc d'effectuer un double tri colonne Nb_points tout d'abord puis colonne Nbmag et voilà c'est fini.
Pour les vrais égalités même total, même nbmag, rien à faire ils sont exaequos, mon petit prog les mets en jaune

Je résume pour ton fichier
1. Création dans colonne G formule "=2*F5+MIN(C5;D5;E5)-MAX(C5;D5;E5)" (sur toutes les lignes des pilotes)
2. Modif de ton bouton classement en rajoutant le double tri sur F puis G puis la mise en couleur des exaequos.

Si tu as des soucis dis le moi

J'ai mis plus de temps à écrire ce post, qu'à coder ma sub!!! :hello: 

Petit souci avec la macro,

Je n'arrive pas à l'adapter à mon tableau : Simplement pour la couleur jaune.

Mon tableau est décalé de quelques lignes et de 2 colonnes par rapport au tien ; Je ne sais pas interagir sur ta macro pour l'adapter à mon tableau.

Je ne suis pas un expert de la macro, simplement novice

En tout cas, merci

Pour le reste, tout fonctionne à merveille.
Lassé par la pub ? Créez un compte