Routine de TRI des résultats d'un concours sportif

Bien le Bonjour à toute l'Equipe,

Je sollicite votre aide pour une tri particulier des résultats d'un concours sportif qui se déroule en 4 manches suivant les règles suivantes:

0) Le gagant est celui qui a le moins de points au terme des 4 manches

1) On néglige la plus mauvaise manche pour faire le Top 3 ---> Ca C'EST FAIT !

2) En cas d'égalité du Top3:

2.1) On liste les résultats des 4 manches de la meilleure à la plus mauvaise ---> Ca C'EST FAIT !

2.2) Là j'ai besoin de votre aide Il faut comparer (de A à D) les résultats de chaque manche, seulement où il y a égalité du Top3,

et à la première différence, faveur est accordée au meilleur score (la plus petite valeur) .

Ca se complique évidemment quand il y a plusieurs égalités du top 3 ! (voir l'exemple avec Top3 = 28)

NB: il peut encore subsister une égalité au terme de l'application de la règle 2.2 ! (voir l'exemple avec Top3 = 28)

(Elle sera départagée par une autre règle 2.3 dont je termine la macro)

J'ai placé , en annexe, mon fichier qui comporte les macros fonctionnelles que vous pouvez activer en poussant sur le bouton prévu au dessus.

Merci d'avance à l'attention que vous porterez à ma demande.

Zorgloub.

Bonjour

Je voudrais essayer de t'aider mais je ne suis pas sûr de comprendre.

Dans ton exemple, tu dis de regarder l'égalité du TOP3 = 18

Or, pour TOP3 = 18 je ne vois pas d'égalité

En revanche, j'en vois 4 pour TOP3 = 28

Mais là, si on applique ta règle du 2.2 pour laquelle tu sollicites de l'aide, le classement me semble sans ambigüité : 3 - 4 - 1 - 2 (de haut en bas) et non pas 3- 3 - 1 - 2 comme indiqué en colonne N

Je me trompe ? Oû ça ?

A te lire

Bonjour Gmb et merci pour ta réponse

1) En effet, faute de frappe il faut bien lire : exemple Top 28 et non 18 (rectification a été faite dans mon message initial)

2) Par contre, en appliquant la règle 2.2, qui me pose problème d'écriture de la routine, il subsiste bien une égalité puisque les deux concurrents restant à départager (Nom10 et Nom11) ne présentent pas de différences aux colonnes C et D (A et B ayant déjà été utilisées).

Règle complète: S'il y a égalité entre deux concurrents, ou plus, leurs scores dans chaque manche doivent être listés du meilleur au plus mauvais et à la (aux) première(s) différence(s), l'égalité doit être départagée en faveur du (des) concurrent(s) avec le(s) meilleur(s) score(s). AUCUN des scores retirés ne doit être utilisé.

(Cette dernière phrase me met dans le doute ! qu'appelle t-on les scores retirés ? ceux qui nous amènent au top3 ou ceux utilisés lors de l'avance de lecture des différences en allant de A à D ??? Je vais en savoir plus cette après-midi)

Toi, tu classes les nom10 et nom11 en regardant les résultats listés de leurs colonnes A et B. Et le nom10 a effectivement une meilleure colonne A... mais dans mon esprit, cette colonne A avait déjà été utilisée pour départager le nom12 et suivants !

Affaire à suivre donc

J'apporte le complément d'info dès que possible.

Merci

Bonjour à tous.

Voilà, j'ai eu l'occasion de voir les Juges de la Fédération et voici la manière correcte de départager les égalités du classement du "Top3". (voir fichier attaché)

Mon nouveau fichier reprend, à la fin, divers cas d'égalités pouvant se présenter et la manière de procéder à leur classification.

Merci de m'apporter votre aide précieuse pour traduire cela en une routine de calcul.

zorgloub.

Bonjour

J'avais regardé un peu ton sujet et j'en suis arrivé à ça

Et avec une première lecture de ton dernier fichier cela ne m'a pas l'air différent de ce que j'avais envisagé

A toi de dire si je me suis fourvoyé

Voir en feuil2

Bonjour à tous.

Merci Banzaïe pour ta réponse

Je teste avec les diverses possibilités d'égalités "particulières" qui peuvent se présenter (voir bas de mon nouveau fichier 1b) dès que je suis sorti du boulot et je donne suite dès que possible.

Merci et @++

Z.

Bonjour BAnzaïe

Sans avoir analysé la macro, j'ai fait les tests sur base des 7cas d'exemple placés au bas de mon fichier [Test Classement1b.xls].

Ca classe juste pour les cas 1, 2 et 3 mais pas pour les cas 4 à 7

Je jette un oeil plus profond dès que possible...

Z.

Bonjour

Je tiens à te faire remarquer qu'il y a des erreurs dans ton fichier

Lors de la suppression du plus grand score ce n'est pas toujours celui-ci qui est enlevé

Voir Lignes 39, 44, 49, 54, 58, 59, 63 et 64

Est-ce que cela influence le classement que tu trouves ?

Mais je suis près à revoir ma copie

Ohh?

Merci de ta réactivité.

Je zieute et je donne suite !

Ah oui,je vois, il s'agit de la colonne D, mais comme elle n'est pas prise en compte (puisque estimée la plus élévée à ne pas prendre en compte dans le top3) je ne pense pas que cela a de l'incidence.

MAis ca peut cependant influencer ta routine !

Je reteste donc ton programme avec les bonnes valeurs de la colonne D, dans les 7 exemples de mon fichier.

Z.

Hello BAnzaïe

Voilà, tests effectués.

On ne sempble pas loin de la solution

Il y a juste un problème avec l'exemple n°5 qui ne classe pas juste !?

Fichier en annexe avec les 7 exemples et leur résolution.

Z.

Bonjour

Heu je ne suis pas d'accord avec toi pour moi c'est juste

Le 1er Nom4 --> Ok

Ensuite Nom3 à un score (5) inférieur (donc meilleur) en colonne V par rapport au score (11) de Nom1

donc pour moi 4 - 3 -1 et 2

Ou alors une subtilité m’échappe

Banzaîe,

Exemple 5 donc:

Voici la manière de voir les choses:

La colonne A est d'abord analysée.

Meilleur score, dans cette colonne A, classé 1er: Nom4 OK, Là, on est d'accord

Toujours en analysant la colonne A: Nom1 arrive indiscutablement en 2ème position avec A=4 points (meilleur que Nom2 et Nom3 qui en ont A=5) et il reste juste à départager Nom2 et Nom 3 qui ont les plus mauvais scores de la colonne A=5points.

C'est cette dernière égalité qu'il faut maintenant départager, sans pénaliser Nom 1 qui en colonne A (colonne prioritaire) est mieux classé avec ses 4 points que les 5 points des deux concurrents restant à départager.

On départage alors Nom2 et Nom3 sur base de leur colonne suivante: B. ( le 1er du classement restant donc toujours bien Nom4 avec son A=2points et en 2° Nom1 avec son A=4points).

Le classement doit donc être:

Nom4 Colonne A=2

Nom1 Colonne A=4

Nom3 Colonne A=5, Colonne B =4

Nom2 Colonne A=5, Colonne B = 8

Z.

Bonjour

zorgloub a écrit :

(meilleur que Nom2 et Nom3 qui en ont A=5)

Où tu vois ça ?

En colonne A : Nom2 = 5

En colonne A : Nom3 = 4

?????

Yesss !

Merci pour ta perspicacité !

Une erreur susbistait dans mon alignement des résultats listés de Nom3. Il y avait 5 4 19 21 (or, 4 ne peut se trouver après 5 !)

Je rectifie donc avec Nom3= 5 6 18 21

En reprenant mon raisonnement de ci-dessus on obtient le classement suivant:

Nom4 A=2

Nom1 A=4

Nom3 A=5 (Plus mauvais que Nom4 et Nom1) B=6

Nom4 A=5 (Plus mauvais que Nom4 et Nom1) B=8

Et ta routine est bien d'accord aussi

Je finalise avec quelques tests complémentaires et mise en page... mais ca me semble parfaitement TOP !

Mille mercis pour ta patience et ta disponibilité.

Z.

Info complémentaire ...

Dans ta routine SUB Classement() je vois un test conditionnel qui vérifie la version d'Excel utilisée lors du tri.

Les instructions de tri écrites en Excel 2003 ne sont-elles pas reconnues en Excel 2007 ?

Pour ma part, j'avais rencontré un tel problème de compatibilté (en passant de 2003 à 2007) que j'ai réglé tout dernièrement en ajoutant le fichier MSCONCTL.OCX dans Windows\system32 qu'il fallait activer avec une commande en mode RUN.

(Si ca vous intéresse, je vous retrouve ca !)

Ensuite en cochant, dans l'Editeur Visual Basic d'Excel, l'option "Microsoft windows common controls 6.0 (SP6)" qu'on trouve dans l'onglet Outils/références.

Vous sauvez alors votre fichier (qui prend en compte cette bibliothèque)

Et tout semble avoir rendu la compatibilité. pour utiliser, sans problème, mes macros écrites en 2003(dont des tris) sous excel 2007.

Zorgloub.

Bonjour

Dans ce cas la c'est le contraire c'est le tri 2007 qui n'est pas reconnu avec 2003

Et le tri 2003 ne permet que le tri sur 3 critères au maximum, contrairement au tri 2007

Je ne crois pas (cela serait trop beau) que cet bibliothèque règle le problème de compatibilité 2003 --> 2007 (je ne connais pas tout)

Je pense qu'elle est utilisée pour des contrôles supplémentaires (dans les userforms entre autre)

Bonsoir Banzaïe.

Tout ce que je peux confirmer c'est que l'ajout de ce petit fichier ocx et le choix de l'option sus-dite dans l'éditeur Visual a rendu possible l'exécution de mes macros 2003 sous 2007 bien qu'il n'y avait pas de userforms ou autres "complications" du genre.

Ca bloquait même sur des MsgBox qui utilisait chr(13) pour un renvoi à la ligne !

C'est toujours bon à savoir et ça m'a pas mal dépanné et si ca pouvait aider quelqu'un je voulais faire part de cette info

Pour conclure avec mon fichier, testé et OK, et comme je vois que tu jongles parfaitement (et plus que rapidement - je t'envie, j'en gagnerais du temps... !) avec toutes ces notions de tri et de routine Visual. Il me serait agréable que tu m'ajoutes, si tu le veux bien, une dernière routine de tri.

Si j'ai dépassé mon crédit, tu ne lis pas plus loin -------------------

1) Ah ... tu es toujours là Comme tu peux le constater, au stade actuel, il peut encore subsister une égalité à départager (cas 3 et cas 6).

S'il subsiste une égalité entre deux concurrents ou plus, ils doivent être classés dans l'ordre de leurs derniers scores de la dernière course. Toute égalité éventuellement restant encore, sera départagée en utilisant les scores de l'avant dernière course, et ainsi de suite jusqu'à la première...

! Ces scores doivent être utilisés même si certains sont des scores retirés ! (on les garde donc tous, dans l'ordre où les manches ont été réellement courues) !

On utilise donc ici Tous les scores dans l'ordre où les manches ont été courues et non plus le listage du meilleur au pire utilisé précédemment.

2) Enfin une présentation finale où le lauréat se retrouve en première ligne, suivi du second, ... serait du super luxe !

Encore merci à toi.

Z.

Bonjour

Il m'a donné du fil à retordre ce code

A tester mais définitivement non compatible 2003

EDIT: Le classement tu l'as en colonne T

Bonjour Banzaïe,

Merci pour ton aide.

Je regarde ta dernière version dès que possible.

Z.

Bonjour Banzaïe,

Bravo et superrrrrrrrrrr merci, la dernière routine a passé les tests que je viens d’effectuer dans les onglets 3 et 6.

Je note que l’ordre du classement général est bien en colonne T.

Une question alors : que représente la colonne A ?

En effet, dans les onglets 1 à 4 la colonne A est conforme à la colonne T mais pas dans les onglets 5 à 8.

Z.

Rechercher des sujets similaires à "routine tri resultats concours sportif"