Réaliser un tri dynamique
Dans la rubrique précédente de ce blog, nous avons étudié le fonctionnement du bouton « Tri croissant » et de la commande « Trier » du menu Données…
Bien entendu, le tri d'Excel n’est en aucun cas dynamique. Si vous modifiez une valeur, il vous faut refaire ce tri pour que le classement affiché respecte les nouvelles valeurs.
Dans certains cas, on aimerait bien avoir un tri dynamique, c’est-à-dire un tableau affichant le résultat, après le tri, en temps réel. Donc sans passer par la commande « Trier » du menu Données…
Nous voyons le résultat de ce tri dynamique dans les colonnes D et E. Les formules de D2 et E2 utilisent une fonction relativement peu connue, la fonction petite.valeur().
Formule de D2 :
=index(A:A;equiv(E2;B:B;0))
Formule de E2 :
=petite.valeur(B:B;LIGNE()-1)
Il y a quand même un problème, c’est que la technique présentée ci-dessus suppose qu’il n’y ait pas de doublon dans la colonne B.
Quand c’est le cas, comme ici, la fonction equiv() ne ramène en effet que la première occurrence de « 60 », soit deux fois le nom « Michel ».
Il y a une façon de résoudre ce problème aussi, mais je dois avouer que c’est quand même compliqué ; et puis, il faut bien que je réserve certains secrets à mes clients :)
Voilà en tout cas un beau challenge pour vous…
Bien entendu, le tri d'Excel n’est en aucun cas dynamique. Si vous modifiez une valeur, il vous faut refaire ce tri pour que le classement affiché respecte les nouvelles valeurs.
Dans certains cas, on aimerait bien avoir un tri dynamique, c’est-à-dire un tableau affichant le résultat, après le tri, en temps réel. Donc sans passer par la commande « Trier » du menu Données…
Nous voyons le résultat de ce tri dynamique dans les colonnes D et E. Les formules de D2 et E2 utilisent une fonction relativement peu connue, la fonction petite.valeur().
Formule de D2 :
=index(A:A;equiv(E2;B:B;0))
Formule de E2 :
=petite.valeur(B:B;LIGNE()-1)
Il y a quand même un problème, c’est que la technique présentée ci-dessus suppose qu’il n’y ait pas de doublon dans la colonne B.
Quand c’est le cas, comme ici, la fonction equiv() ne ramène en effet que la première occurrence de « 60 », soit deux fois le nom « Michel ».
Il y a une façon de résoudre ce problème aussi, mais je dois avouer que c’est quand même compliqué ; et puis, il faut bien que je réserve certains secrets à mes clients :)
Voilà en tout cas un beau challenge pour vous…
9 Commentaire(s):
De un, merci pour le super truc! Petite.valeur() me donne plein d'idées...
Seulement, il me semble que la gestion des doublons n'est pas si difficile que ça?!
J'ai tout juste ajouté une colonne qui compare deux valeurs successives entre elles et ajoute "1" à la valeur précédente dans le cas où la valeur se répèterait... Du genre:
=SI(E4=E5;F4+1;0) "E" étant la colonne dans laquelle on retrouve la fonction "petite.valeur()".
Ensuite, la fonction "index" devient simplement:
=INDEX(A:A;EQUIV(E5;B:B;0)+F5), F5 prenant les valeurs 0 pour la première apparition d'un nombre, 1 pour la deuxième, etc...
Est-ce que c'est la façon que vous avez utilisée ou bien si vous aviez plus compliqué?
J'aurais aimé valider, merci!
By Anonyme, sur 10:12 PM
Ce n'est pas si simple que cela car le premier argument de petite.valeur() peut être une matrice...
Quitte à appliquer votre solution, il est préférable d'utiliser une formule du genre =B2+ligne()/1000 qui éliminera les ex aequo en se calculant plus vite et sans effet visible si l'on n'affiche pas les décimales...
By Hervé Thiriez, sur 9:38 PM
Bonjour,
Est-il possible de créer un tri dynamique "automatisé", à même la plage de donnée que l'on est en train d'éditer? C'est-à-dire qu'en ajoutant une donnée de la liste, elle se classe automatiquement dans la liste en cours de frappe selon l'ordre demandé (croissant ou décroissant).
Merci
By Jean-François Noël, sur 3:31 AM
Ce que vous demandez est impossible sans macro.
Si vous voulez cette macro, contactez-moi à thiriez@hec.fr.
By Hervé Thiriez, sur 12:47 PM
Quand il y a des doublons dans une colonne, est-il possible de rechercher par la fonction EQUIV , 2 cellules en même temps, c'est-à-dire la ligne qui contient à la fois un nom choisi et un âge choisi?
By Anonyme, sur 4:56 PM
avec la fonction DECALER et en redéfinissant la plage de données de mon EQUIV
By snoop doggy bag, sur 2:14 PM
C'est vrai que cet article date un peu et que le challenge ne doit plus être d'actualité mais pour m'amuser j'ai décidé de m'y essayer :
Les données sont entrées en $B$7:$C$14. la Table de résolution en F17.
Pour récupérer les chiffres :
=PETITE.VALEUR($C$7:$C$14;LIGNES(G$17:G17))
Après avoir récupéré les chiffres, pour récupérer les nombres :
=INDEX($B$7:$B$14;PETITE.VALEUR(SI($C$7:$C$14=$G17;LIGNE($C$7:$C$14)-LIGNE($C$7)+1);NB.SI(G$17:G17;G17)))
By Stéphane Ntonga, sur 2:11 AM
Je voulais dire pour récuperer les noms au lieu des "nombres". La précision et le détail sont de rigueur !!!
Merci encore pour le travail effectué. Je fouille dans le blog depuis quelques temps et je trouve quelques pépites qui m'héritent d'être exposés, ou du moins qui trouve leur place dans mon arsenal.
By Stéphane Ntonga, sur 2:13 AM
Après 5 ans de relation avec mon petit ami, il a soudainement changé et a cessé de me contacter régulièrement. Il proposait des excuses pour ne pas me voir tout le temps. Il a cessé de répondre à mes appels et à mes sms et il a cessé de me voir régulièrement. J'ai ensuite commencé à le rencontrer avec différentes amies de filles, mais à chaque fois, il disait qu'il m'aimait et qu'il avait besoin de temps pour réfléchir à notre relation. Mais après que j’ai contacté (padmanlovespell@yahoo.com), Dr.Padman du temple des sorts jeté un sortilège d’amour et après un jour, mon petit ami a commencé à me contacter régulièrement et nous avons emménagé ensemble au bout de quelques mois et il était plus ouvert à moi. qu’avant et il a commencé à passer plus de temps avec moi que ses amis. Nous nous sommes finalement mariés et nous sommes maintenant mariés avec bonheur depuis 2 ans avec un fils. Depuis que le Dr. Padman de padmanlovespell@yahoo.com m'a aidé, mon partenaire est très stable, fidèle et plus proche de moi qu'auparavant
By DORIS LORI, sur 3:52 AM
Enregistrer un commentaire
<< Accueil