Récapitulatif

N

Nicolas 65

Guest
Bonsoir,

Je voudrais récapituler dans une feuille nommée challenge l'ensemble des couples chevaux (colonne B) & cavaliers (colonne C) contenus dans certaines feuilles de mon classeur le nom de ces feuilles étant inscrit en ligne 1.
Ces données devront s'inscire à partir de la ligne 10 sur la feuille challenge avec : en colonne B le nom des cavaliers, C le nom des chevaux. En colonne D on trouverait le classement de la première journée, en E le classement de la deuxième ...

Un Grand Merci d'avance.

PS: Il m'est impossible de mettre un fichier joint le fichier sur lequel je travaille faisant environ 2Mo même zippé il ne pourrait être mis sur le forum.
Cependant si quelqu'un avait la grande amabilité et le temps de jeter un oeil sur ce dernier je lui enverrai avec grand plaisir.
 
N

Nicolas 65

Guest
Bonjour,

1)Ce tableau est fantastique. Toutefois si le classement de l'épreuve1 n'est pas fait et que les concurrents sont classés par ordre de départ on n'obtiendra pas les classés. De plus il est impossible de faire un tri.

2)Je souhaitais ne renvoyer qu'une seule ligne par couple tous les résultats d'un couple étant sur la même ligne (challenge "couple")

3)Est-il possible de faire un challenge cavalier . On renvoit tous les résultas d'un cavalier sans tenir compte du cheval ?

4) ESt-il possible de faire un challenge cheval. On renvoit tous les résultats d'un cheval sans tenir compte du cavalier ?

Merci
 
M

Monique

Guest
Bonjour,

1 ) Si le classement n'est pas fait, on n'obtient pas les classés.
Mais je ne vois pas comment faire un tri, par formule, sur 7 feuilles.

2 ) Je souhaitais ne renvoyer qu'une seule ligne par couple
Je ne vois pas non plus.

3 ) Challenge cavalier
Non plus, seulement le 1er résultat, à condition que les feuilles soient triées

4 ) Challenge cheval
Idem question 3

Tu as dans ton classeur 2 listes de validation, 1 pour les cavaliers et 1 pour les chevaux.
Résultats obtenus : nb de courses, meilleure place par épreuve, nom du cheval (ou du cavalier). Tu peux en ajouter d'autres.
 

Pièces jointes

  • BlanquefortNicolasV1.zip
    33.9 KB · Affichages: 37
N

Nicolas 65

Guest
Bonsoir Monique, Bonsoir le forum

Ton travail est fabuleux mais il ne répond pas tout à fait à mon problème mais il me servira quand même. Je vais donc retenter une explication.

Je souhaiterais pouvoir gérer des challenges de saut d'obstacles sur plusieurs épreuves.

Dans chaque épreuve il y a un certain nombre de cavaliers classés (nombre contenu en C2). Un cavalier pouvant être classés plusieurs fois et un cheval aussi.

Je souhaiterais
1) Pouvoir faire apparaitre dans un tableau tous les cavaliers ayant été classés et uniquement ceux ci une seule fois chacun et en face dans différentes colonnes le nombre de points obtenu dans chaque épreuve (le classement). On ne tiendra donc pas compte ici du cheval monté.
Ceci me permettra de trouver le classement du meilleur cavalier.

2) Pouvoir faire apparaitre dans un tableau tous les chevaux ayant été classés et uniquement ceux ci une seule fois chacun et en face dans différentes colonnes le nombre de points obtenu dans chaque épreuve (le classement). On ne tiendra donc pas compte ici du cavalier.
Ceci me permettra de trouver le classement du meilleur cheval.

3) Pouvoir faire apparaitre dans un tableau tous les couples (cheval et cavalier) ayant été classés et uniquement ceux ci une seule fois chacun et en face dans différentes colonnes le nombre de points obtenu dans chaque épreuve (le classement). Ceci me permettra de trouver le classement du meilleur couple.

S'il n'y a pas de solution aux 3 questions précédentes existe-t-il un moyen (peut être pas forcément par formule) de renvoyer dans une colonne tous les chevaux (et une seule fois chacun) de certaines feuilles le nom des feuilles étant inscrit à partir de la cellule A10 afin d'alimenter automatiquement la liste de validation (cf document monique)?

Idem avec les cavaliers.

Idem avec la notion de couples.

Merci
 
J

Jean-Marie

Guest
Bonjour

Je n'ai pas suivi toutes les interventions de ce fil, Mais regarde dans la feuille active si cela peut aider ou te convient.

ATTENTION, pour passer dans la limite des 50 Ko j'ai supprimé des lignes de cavaliers de les feuilles "Epreuves".

Il y a trois function VBA,
Licencié : retourne une valeur numérique présente dans la plage du 1er argument et qui ne figure pas dans la liste du 2ème argument.

NomLicencié : retourne une valeur alplanumérique présente dans la plage du 1er argument et qui ne figure pas dans la liste du 2ème argument.

NbPoint : retourne une valeur alphanumérique structuré qui représente le nombre de fois ou le cavalier est classé pour chaque place possible (1er, 2ème, 3ème ....). A = Null pas de classement à cette place.

La formule dans la colonne P, =NB.SI(O$4:O$73;"<"&O4)[i[+(LIGNE()/10000)[/i] retourne le classement en fonction de la chaîne des positions/place, la partie en italique permet de différencier les ex aequo (servira dans les autres fonctions).

Colonne R, une formule =ENT(INDEX(P$4:p$73;EQUIV(S4;M$4:M$73;0);0)+1) retourne la valeur entière (sans décimale) de la position liée au N° de licence. Une MFC supprime l'affichage des ex aequo.

Colonne S, la formule =INDEX(M$4:M$73;EQUIV(PETITE.VALEUR($P$4:$P$73;LIGNES(S$4:S4));$P$4:$P$73;0);1) retourne le N° de Licence en fonction du classement (colonne P) et se en fonction du nombre de cavalier déjà affiché (LIGNES(S$4:S4)).

@+Jean-Marie
 

Pièces jointes

  • Blanquefort2.zip
    46 KB · Affichages: 42
J

Jean-Marie

Guest
Bonsoir Nicolas

Dans la plage B4:H29 je récupère les numéros des classés pour chaque épreuve, cela évite après de devoir se balader dans les différentes feuilles. =SI(ESTNA(EQUIV($A4;'Epreuve 1'!$M$7:$M$499;0));" ";INDEX('Epreuve 1'!$D$7:$D$499;EQUIV($A4;'Epreuve 1'!$M$7:$M$499;0);1))

EQUIV retourne en fonction l'index de la place (A4) à l'intérieur d'un tableau, si la valeur n'est pas présente dans le tableau, la fonction retourne le message d'erreur #N/A, c'est l'objet de la première partie ESTNA(), quand la place à été attribué à un cavalier il faut retourner le N° de licence c'est par la fonction INDEX().

Dans la plage B36:H61, même fonctionnalité mais je récupère les noms des cavaliers.

Dans la plage B68:H96, pour le nom des chevaux.

Deuxième étape connaître sans doublon le N° des licences. C'est le rôle de la function VBA Licencié, c'est une function qui boucle (en fonction du nombre d'éléments de la plage du 1er argument) un test de présence d'une valeur par rapport à deux plages.
La function NomLicencié est sur la même base.
Ces deux Function utilise à la base des fonctions de feuilles de calcul, COUNTIF -> NB.SI et MATCH -> EQUIV

La troisième étape, consiste à déterminer le nombre de fois ou le cavalier est classé pour chaque épreuve et ce, à chaque place (1er, 2ème). Cette fonction utilise aussi les fonctions de feuilles de calcul REPT, INDEX et SUBSTITUTE -> SUBSTITUE.
Une petite particularité sur l'utilisation de la fonction INDEX dans ce cas elle retourne une plage de cellules. La longueur de la chaîne est déterminée en fonction du nombre de places. Le caractère A indique que le cavalier n' a pas été classé à cette place. Les chiffres dans la chaîne, exemple 6 (8-2) indique que le cavalier à été classé 2 fois à la même place, c'est le cas du N° 552954.

Maintenant nous avons pour chaque cavalier ses positions de classements dans les épreuves. On ne peut pas utiliser la fonction RANG qui n'utilise que des valeurs numériques, il y a une fonction équivalente pour les chaînes alphanumériques, c'est
=NB.SI(O$4:O$39;"<"&O4)+(LIGNE()/10000)
j'ai rajouter une astuce de Monique pour différencier les ex aequo.

Nous avons maintenant un classement global, il faut le retravailler pour le mettre en ordre du premier au dernier, c'est la dernière partie.

Cette formule =ENT(INDEX(P$4:p$39;EQUIV(S4;M$4:M$39;0);0)+1), affiche l'ordre en supprimant la gestion des ex aequo. La mise à blanc dans la colonne R est obtenu par MFC.

Le N° de licence et le Nom sont obtenus par une formule. La function PETITE.VALEUR trie par ordre croissant une matrice de données, et retourne une valeur suivant la position dans cette matrice. EQUIV recherche cette valeur, dans la matrice non triée et retourne sa position, qui est ensuite utiliser par la fonction INDEX.
=INDEX(M$4:M$39;EQUIV(PETITE.VALEUR($P$4:$P$39;LIGNES(S$4:S4));$P$4:$P$39;0);1)

Nicolas, j'ai essayé d'être le plus explicite, mais ce n'est pas facile, et je n'excelle pas dans ce registre.

Bon dimanche

@+Jean-Marie
 
J

Jean-Marie

Guest
Bonjour Nicolas

Faute de place sur le fichier, tu n'as pas le classement pour les canassons. En revanche tu as toutes les formules ou Function VBA pour le réaliser, il suffit de donner les bonnes plages de cellules aux bonnes formules, le principe restant le même.

@+Jean-Marie
 

Statistiques des forums

Discussions
312 844
Messages
2 092 759
Membres
105 528
dernier inscrit
GPGA45