Microsoft 365 RechercheX et exaequo

matmac

XLDnaute Junior
Bonjour,

Dans le fichier joint, à l'onglet "classement", j'ai une formule recherchex croisée avec une formule petite.valeur qui me permet d'établir un classement à partir de valeur récupérée dans l'onglet 'liste participants" et d'une focntion rang. Or lorsqu'il y a des exaequo dans cette fonction rang, la formule affiche X fois le même nom s'il y a X exaequo.
Comment puis-je modifier ma formule pour que les exaequo apparaissent ?

Merci par avance
 

Pièces jointes

  • Résultats JDL 2023.xlsx
    154.9 KB · Affichages: 11

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Matmac,
Pour départager les exæquos, une possibilité est de différencier les classements an feuille Liste Participants avec en N3 :
VB:
=SI(M3="";"";RANG(M3;M$3:M$42;1)+LIGNE()/1000000)
En format Nombre, 0 décimale.
Le petit LIGNE()/1000000 ne changera pas le résultat mais différentiera deux exæquos car ils ne seront pas sur la même ligne.
Par ex en Y5 : 5.000005 et en Y9 : 5.000009.

NB : je ne fourni pas de PJ car sous 2007 je n'ai pas RechercheX.
 

matmac

XLDnaute Junior
Re,
Ca fonctionne, mais le problème auquel je n'avais pas pensé, c'est que les exaequo n'ont pas la même place.
Du coup, j'ai testé avec la fonction trierpar par ordre de place (colonne AU de la feuille "liste participants") puis recherchex pour attribuer la place. Ca à l'air de fonctionner, mais ça m'affiche les nome de ceux qui ne sont pas classés dans la catégorie. Je met en pièce jointe pour mieux comprendre
 

Pièces jointes

  • Résultats JDL 2023.xlsx
    154.4 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
c'est que les exaequo n'ont pas la même place.
Je ne comprends pas ce que vous voulez dire.

Pour mieux comprendre, en PJ j'ai fait un essai sans RechercheX, mais avec de simple Index Equiv :
VB:
=SIERREUR(INDEX('Liste Participants'!$C$3:$C$42;EQUIV(GRANDE.VALEUR('Liste Participants'!$N$3:$N$42;A4);'Liste Participants'!$N$3:$N$42;0))&"  ( "&INDEX('Liste Participants'!$M$3:$M$42;EQUIV(GRANDE.VALEUR('Liste Participants'!$N$3:$N$42;A4);'Liste Participants'!$N$3:$N$42;0))&" pts )";"")
Pour départager les ex aequo, j'ai donné avantage à celui qui a le plus de "notes" dans A à Z,
plus évidemment le Ligne()/1000000 dans la liste. Ce qui donne :
VB:
=SI(M3="";"";RANG(M3;M$3:M$42;1)+NB.SI(E3:L3;">0")/1000+LIGNE()/100000000)
Départage arbitraire bien sur mais vous pouvez changer le critère de départage.
Si dans la liste la colonne M donne le nombre de points alors le résultat de la PJ semble cohérent, les ex aequo sont bien pris en compte, sinon soyez plus explicite.
(NB : Je n'ai traité que CLASSEMENT SCRATCH pour l'exemple )
 

Pièces jointes

  • Résultats JDL 2023 (1).xlsx
    158.7 KB · Affichages: 0
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
La nuit portant conseil :), j'ai trouvé l'astuce permettant de départager les ex aequo tout en les déclarer ex aequo. Voir PJ.
1- Liste Participants Col N, on revient à la formule initiale
VB:
=SI(M3="";"";RANG(M3;M$3:M$42;1)+LIGNE()/100000000)
2- Classements
Le N° de place n'est plus donné par la colonne A mais par Ligne()-3 ( le N°1 se trouvant en ligne 4, Ligne()-3 =1 ). Ce qui fait que le N°1 doit se trouver impérativement en ligne 4.
Ce qui donne en colonne B:
Code:
=SIERREUR(INDEX('Liste Participants'!$C$3:$C$42;EQUIV(GRANDE.VALEUR('Liste Participants'!$N$3:$N$42;LIGNE()-3);'Liste Participants'!$N$3:$N$42;0))&"  ( "&INDEX('Liste Participants'!$M$3:$M$42;EQUIV(GRANDE.VALEUR('Liste Participants'!$N$3:$N$42;LIGNE()-3);'Liste Participants'!$N$3:$N$42;0))&" pts )";"")
3- En colonne A, on regarde si le nombre de points est identique à la ligne du dessus pour classer les participants, donc on met bien les ex aequo :
Code:
=SIERREUR(SI(INDEX('Liste Participants'!$M$3:$M$42;EQUIV(GRANDE.VALEUR('Liste Participants'!$N$3:$N$42;LIGNE()-3);'Liste Participants'!$N$3:$N$42;0))=INDEX('Liste Participants'!$M$3:$M$42;EQUIV(GRANDE.VALEUR('Liste Participants'!$N$3:$N$42;LIGNE()-4);'Liste Participants'!$N$3:$N$42;0));A4;A4+1);"")
avec 1 "en dur" en A4.
On voit bien que Descartes2 et Bayet1 sont ex aequo, ainsi que Rabelais3 et Descartes1.

Voilà ça marche. Reste à vous :
1- De revenir à RechercheX au lieu de IndexEquiv si vous le voulez.
2- De supprimer l'information nombre de points
3- De traiter les 3 autres classements.

Faites un retour si cette solution vous convient.
 

Pièces jointes

  • Résultats JDL 2023 (2).xlsx
    157.9 KB · Affichages: 2

Cousinhub

XLDnaute Barbatruc
Bonjour,
J'aurais bien voulu comprendre la méthode de classement utilisée dans ton résultat...
Selon tes calculs, le "LPF" Nadaud arrive en tête, bien qu'il n'ait participé qu'à 4 "compétitions".
L'établissement ayant participé à 1 seule compét' est donc assuré de finir premier?
Au nombre de points, cela pourrait également poser quelques soucis, pour peu qu'un établissement n'ait pas participé au Quizzaco..
Bonjour Sylvain
Je viens de regarder ton dernier envoi, et ne comprend pas non plus la méthode de classement...
Tu additionnes les différents rangs?

Bonne journée
 

ALS35

XLDnaute Occasionnel
Bonjour à tous,
Dans ton dernier exemple, essaie cette formule qui gère à la fois la place et le nom :
VB:
=LET(p;'Liste Participants'!C$3:C$42;r;'Liste Participants'!AU3:AU42;t;TRIERPAR(ASSEMB.H(r;SI(r="";"";p));r);t)
Cordialement
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Cousinhub,
Tu additionnes les différents rangs?
En aucune façon.
La Liste utilise Rang pour classer en fonction des points de la colonne M.
Dans Classement je remet dans l'ordre Rang du premier au dernier, puis en colonne A détermine les ex aequos.
bien qu'il n'ait participé qu'à 4 "compétitions"
Exact c'est discutable. Perso j'aurais préféré un classement comme je l'ai fait au post précédent, en donnant un bonus à ceux qui ont participés au plus d'épreuves, en faisant :
VB:
RANG(M3;M$3:M$42;1)+NB.SI(E3:L3;">0")/1000+LIGNE()/100000000
le Ligne()/1e6 élimine les ex aequo, et le NB.SI(E3:L3;">0")/1000 permet d'avantager celui qui a le plus d'épreuves.
Ensuite si un individu fait 8 épreuves médiocres à 3 points pour chaque épreuve et un autre qui n'a fait qu'une épreuve mais à 20 points, lequel est le 1er ? Ce n'est plus mathématique mais philosophique. :)
 

Cousinhub

XLDnaute Barbatruc
Bonjour Cousinhub,

En aucune façon.
La Liste utilise Rang pour classer en fonction des points de la colonne M.
Dans Classement je remet dans l'ordre Rang du premier au dernier, puis en colonne A détermine les ex aequos.
:)
Re-,
Si on analyse, tu prends la colonne M de l'onglet "Liste Participants" comme référence.
Et cette colonne additionne tous les rangs des compétitions..
E3 : valeur de la cellule E3 de l'onglet "A-Pointe et pagaie" qui correspond au rang de cette compétition...
etc...
Du moins, d'après ma lecture... :)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Et cette colonne additionne tous les rangs des compétitions..
Je n'ai pas toucher à cette colonne, elle est présente dans la PJ d'origine. Donc un choix de Matmac.

Et c'est vrai que c'est bizarre. Tout dépends comment sont comptabilisé les points.
Mais si, plus on a de points meilleur on est, comme souvent en sport, alors s'en devient absurde puisque si quelqu'un qui a le max de points à chaque épreuve, il se retrouverait loin derrière celui qui a été moins bon.
Dans ce cas on pourrait inverser le tout, il suffirait de remplacer Grande.valeur par Petite.valeur.

Mais ça, c'est à Matmac de nous expliquer ses règles.
 

matmac

XLDnaute Junior
Bonjour,
@sylvanu : Je regarde ce que ça donne. Si je n'y arrive pas, la nuit portant conseils également, je vais faire plus simple : départager avec le prologue en additionnant sa valeur/100 à la somme des résultats permettant d'établir le rang. Ainsi, il n'y a plus d'exaequo. Merci
@Cousinhub : le fichier est incomplet, mais je n'avais pas besoin de toutes les infos pour le tester.

Merci pour votre aide
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re, bonjour Djidji,
Effectivement en utilisant Petite.valeur, on rétablit le bon ordre. Voir PJ.Ainsi celui qui est 8 fois 1er est devant les autres.
Reste effectivement le problème du nombre d'épreuves exécutées car si on ne fait qu'une épreuve et qu'on arrive 1er, alors on est 1er au classement général.
 

Pièces jointes

  • Résultats JDL 2023 (3).xlsx
    157.8 KB · Affichages: 0

matmac

XLDnaute Junior
Re,
Je n'avais pas vu tout vos messages, le temps de rédiger le mien.
Désolé, de vous avoir induit en erreur en fournissant un fichier avec des données incomplètes. D'ailleurs, je n'avais même pas entré la formule pour récupérer les rang du prologue...
Le classement se fait bien en additionnant les places (donc rang) pour chaque épreuve (une fois que tous ont participé à toutes les épreuves...). Donc la plus petite somme de rangs arrive 1er… C'est discutable, je l'entends, mais le résultat est le même à la fin.
Encore merci
 

Discussions similaires

Réponses
18
Affichages
767

Statistiques des forums

Discussions
312 214
Messages
2 086 311
Membres
103 175
dernier inscrit
abcc