Classer sur Excel

Résolu/Fermé
Vince - 16 juil. 2010 à 16:37
 Vince - 16 juil. 2010 à 23:10
Bonjour,

Config :
Windows XP / Excel 2000

Je souhaiterai classer automatiquement dans l'ordre un matrice Excel reprenant des noms et des notes.

Dans mon exemple :
----A-----B
1 Toto 74
2 Lulu 45
3 Fafa 87
4 Mimi 12

Je souhaite trouver de façon automatique :
----C-----D
1 Fafa 87
2 Toto 74
3 Lulu 45
4 Mimi 12

Après maintes recherches, j'ai trouvé comment faire en colonne D, soit :
=GRANDE.VALEUR(B1:B4;LIGNE(INDIRECT("a1:a"&(LIGNES(B1:B4)*COLONNES(B1:B4)))))
En matriciel Ctrl + Maj + Ent.

Mais impossible de trouver pour les noms. La fonction RECHERCHEV ne marche pas car la matrice n'est pas dans l'ordre croissant (et pour cause, c'est ce que je cherche à faire !).

Je ne veux pas utiliser la fonction "Données-Trier" à la mano, car il faut que celà soit automatique, les notes étant mises à jour périodiquement sur mon fichier source.

Merci d'avance pour votre aide !

1 réponse

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 413
Modifié par Vaucluse le 16/07/2010 à 17:08
Si vous avez réussi à éditer les notes, la fonction ci dessous en C devrait vous éditer les noms, mais sous réserve quelque soit la formule, qu'il n'y ait pas d'exaequo et en partant de la ligne 1

=INDEX($A$1:$A$4;EQUIV(D1;$B$1:$B$4;0))

Pour info: la formule RECHERCHEV n'exige pas de classement si vous la terminez par ;0) ou par ;FAUX ou même simplement par;
=RECHERCHEV(Cell;Champ;0) ou ;FAUX) ou;)
mais dans votre exemple elle ne marche pas puisque la valeur cherchée est derrière la valeur à trouver.
il en est de même pour le code EQUI(......;0)

Conseil: inquiétez vous du problème d'éventuels exaequo si cela peut être le cas autant dans votre formule que dans la mienne et si problème, revenez, nous trouverons une solution......

... dont une toute bête pour l'exemple:
décaler votre modèle d'une colonne et commencez en ligne 2
appliquez votre formule grande valeur à la colonne C(ald B) et placer là dans la colonne F
en colonne C à partir de C2:
=B2+NB.SI($B$1:B1;B2)/100
attention le premier B1 est bloqué, pas le second
ainsi les exaequo vont s'incrémenter de 0,01 à chaque fois qu'ils apparaitront . Ceci vous laisse 99 cas entre deux valeurs (si insuffisant, diviser par 1000)
pour éditer ensuite, calez la formule INDEX avec:
=INDEX($A$2:$B$4;EQUIV(F2;$C$2:$C$4;0);1)
soit terminée par ;1) pour éditer colonne A et ;2) pour éditer colonne B

bien entendu les colonnes de transfert C et F peuvent être hors champ et masquées;


Crdlmnt



Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 413
Modifié par Vaucluse le 16/07/2010 à 17:20
en complément:
votre formule en D dans votre message initial semble un peu complexe!
je pense obtenir le même résultat (si départ sur ligne 1et pour 100 lignes par ex) avec:
=SI(LIGNE()>NBVAL($B$1:$B$100);"";GRANDE.VALEUR($B$1:$B$100;LIGNE())
formule non matricielle
Bien entendu LIGNE() est à ajuster selon la ligne de départ du tableau, : ligne()-1 pour un départ en ligne 2 par exemple.
0
GÉNIAL ! Ça marche !!!
Merci beaucoup, Vaucluse.

Concernant les ex-æquo, peu de risque : il s'agit, dans mon tableau source, d'un nombre d'occurrences réalisés par les candidats, n'étant retenu que celui dont la réponse s'approche le plus de l'objectif et en cas d'égalité à une question, le plus rapide.

Par ailleurs, votre formule en D m'a permis d'alléger sensiblement le fichier.
Bravo !

Bien cordialement
0