[Calc] Extraction de données en fonction d'un critère

Bonsoir et meilleurs voeux à tous et toutes,

Dans un classeur effectuant la gestion d'une compétition sportive,
j'obtiens dans une feuille un tableau de la forme suivante:
Nom Catégorie Résultat
Pierre H 320
Claire D 267
Anne D 325
Paul J 300
Martine J 255
Emile J 301
Jean H 308
Jacques H 322

Je voudrais obtenir dans la même feuille, ou une autre, 3 "tableaux", un
par catégorie qui contiendrait les compétiteurs et leur résultat:

Catégorie H
Place Nom Résultat
2 Pierre 320
3 Jean 308
1 Jacques 322

Catégorie D
Place Nom Résultat
2 Claire 267
1 Anne 325

Catégorie J
Place Nom Résultat
2 Paul 300
3 Martine 255
1 Emile 301

Pour la place, je peux l'obtenir avec rang, mais je n'arrive pas à
trouver comment "extraire" en fonction de la catégorie. Le but est que
cela fonctionne sans macro.

Quelles fonctions dois-je utiliser ?

Merci d'avance.

Bonjour Jack,

Je pense que dans ton cas, la Table de pilote (analogue au tableau croisé dynamique d'Excel) est l'outil approprié ! Tu trouveras ici, toutes les informations utiles :

https://wiki.documentfoundation.org/images/5/55/CG3608FR-TablePilote.pdf

Cordialement, Philippe

Bonjour

La fonction SI permet de "travailler" sur des matrices tu peux donc
aussi utiliser quelque chose comme :

=SI($B$2:$B$9=A12;$C$2:$C$9;0)

Où B est la colonne contenant la catégorie, A12 la catégorie recherchée
et C la colonne contenant les valeurs.

Tu obtiens une matrice pour la catégorie que tu peux "travailler"
par exemple avec la fonction GRANDE.VALEUR

Ci-joint un exemple "décomposé" dans plusieurs colonnes pour
faciliter la compréhension.

Classement.ods
<http://nabble.documentfoundation.org/file/n4026346/Classement.ods>

Nota : pour alléger les formules (en évitant cette "décomposition") tu
peux créer des "noms" utilisateurs reprenant ces formules et utiliser
les "noms" à la place.

Meilleurs voeux...

Pierre-Yves

J'avais essayé la table pilote, mais sauf erreur de ma part, les tables
obtenues ne se mettront pas à jour automatiquement au fur et à mesure
de la saisie des résultats.

La solution de Pierre-Yves me correspond mieux.

Merci

Bonjour,

Il faut vraiment que je potasse ces histoires de matrice.

Le
=SI(ESTNA(EQUIV(B13;$C$2:$C$9;0));"";INDEX(A$2:$A$9;EQUIV(B13;$C$2:$C
$9;0)))
je faisais cela avec du recherchev() en ayant placé mes colonnes dans le
bon ordre (le discriminant étant un numéro de dossard que je n'avait
pas mentionné dans l'exemple pour simplifier).
Le couple EQUIV / INDEX est plus efficace en terme de ressource et
rapidité ?

Merci pour cette réponse aussi claire que détaillée.

Suite...

Jack.R wrote

je faisais cela avec du recherchev() en ayant placé mes colonnes dans le
bon ordre (le discriminant étant un numéro de dossard que je n'avait
pas mentionné dans l'exemple pour simplifier).
Le couple EQUIV / INDEX est plus efficace en terme de ressource et
rapidité ?

Un avantage est que la colonne "index" ne doit pas être obligatoirement
la première comme avec les fonctions RECHERCHE.
Autre avantage on ne "travaille" qu'avec les colonnes nécessaires :
celle contenant l'index et celle qu'on veut "retourner". Avec RECHERCHEV
si on manipule par exemple A1:F100 avec ce que l'on recherche en A et ce
que l'on veut retrouver en F on "passe" toute la plage... y compris les
colonnes
dont on n'a pas besoin. Dans ce cas, le couple EQUIV/INDEX est sans doute
moins gourmand en ressources.

Cordialement
Pierre-Yves