Monsieur Excel
Pour tout savoir faire sur Excel !

08 décembre 2005

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…

8 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 Anonymous 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 Blogger 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 Blogger jfnoel, sur 3:31 AM  

  • Ce que vous demandez est impossible sans macro.

    Si vous voulez cette macro, contactez-moi à thiriez@hec.fr.

    By Blogger 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 Anonymous Anonyme, sur 4:56 PM  

  • avec la fonction DECALER et en redéfinissant la plage de données de mon EQUIV

    By Blogger 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 Blogger Stefyu Thechosenone, 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 Blogger Stefyu Thechosenone, sur 2:13 AM  

Enregistrer un commentaire

<< Accueil