Bonsoir,
Il est possible de faire des tris automatiques sur une variable, deux variables ou plus uniquement par formule.
Le cœur de la solution passe par la fonction NB.SI()
qui compare la valeur en cours avec toutes les autres valeurs, en fonction de chaque comparaison, NB.SI()
cumule des points ou non pour la valeur en cours. Ainsi chaque valeur va avoir un score de classement, score ordonné par PETITE.VALEUR()
. L’autre astuce consiste à faire suivre, dans le score, le n° de la ligne de la valeur initiale, grâce à la fonction LIGNE()
. Comment avoir deux valeurs en une ? Il suffit de loger le n°de ligne dans la partie décimale du score, en divisant par 10 000 (par exemple) et en l’additionnant au score.
L’extraction de ce n°de ligne se fera par (Valeur - ENT(Valeur))*10 000
. Comme la précision d’un tableur est plutôt conçue pour un usage bancaire, il arrive que cette opération ne permette pas de retrouver exactement le nombre entier initial (à 10^-9 près, par exemple). La fonction ARRONDI()
permet d’arranger cela.
Lorsqu’il s’agit de trier en cascade sur plusieurs variables, il suffit de les concaténer (en prenant quelques précautions de formatage pour les valeurs numériques) et d’appliquer la méthode précédente.
Cette technique fait appel à de nombreuses colonnes intermédiaires, qu’on pourrait réduire en allongeant les formules, ce qui n’arrangerait rien, que ce soit pour la pédagogie ou pour la maintenance. Ces colonnes peuvent se masquer, voire être mises sur une feuille masquée à part. Chaque tri se fait immédiatement, sans avoir à mettre à jour.
Voir l’exemple Tri.ods. Les plages Nombre, Essence, Diamètre, Hauteur et Qualité ont été nommées, mais ce n’est nullement obligatoire. Il faudrait juste ne pas oublier de les étendre en fonction du nombre d’entrées…
Cordialement,