• Initiateur de la discussion Initiateur de la discussion Tophe31
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

Tophe31

Guest
Bonjour, voila mon problème :
j'ai réalisé un tableau dont pas mal de cellules contenant des fonctions sont verrouillées. Il n'est par conséquent pas possible de faire de tri vertical. Pour remédier à cela, j'ai fait un collage spécial du tableau en question sur la deuxième feuille que je n'ai pas verrouillé. Est-il possible de programmer un tri qui se face automatiquement dans cette feuille ?
De cette façon, je rentre les valeurs dans la feuille 1, et j'ai un classement effectué automatiquement dans la feuille 2.
Merci.
 
Je vois une solution en deux étapes, pour ma part.
Premier temps: création d'une zone où la fonction RANG() te donne un numéro d'ordre pour chaque valeur.
Deuxième temps une fonction SI() qui vérifie dans la liste des rangs ou se situe le premeire, le second,....

Hope this will help you.

Bonne soirée
 
Bonsoir,

En espérant qu'il n'y ait que quelques valeurs à classer.
Tu sélectionnes autant de cellules que de valeurs à classer.
Pour un tri décroissant de 6 valeurs, tu tapes :
=GRANDE.VALEUR(table;{1;2;3;4;5;6})
et tu valides par ctrl + maj + entrée.
Pour un tri croissant :
=PETITE.VALEUR(table;{1;2;3;4;5;6})

Ce sont des accolades qui entourent la série 1;2;3; etc
"table" = le nom de la plage de cellules à classer.
 
Re

Suite
Si tu veux trier une plage de cellules selon la valeur d'une autre plage.
Exemple : trier la plage nommée "prenom" selon la plage nommée "table"
=INDEX(prenom;EQUIV(GRANDE.VALEUR(table;{1;2;3;4;5;6});table;0))
Même système : sélectionner d'abord autant de cellules que nécessaire, taper la formule puis valider par ctrl + maj + entrée.
 
Bonsoir,

On peut remplacer {1;2;3;4;5;6} de la fonction par LIGNE()-Nombre de lignes de l'entête.

En amaginant que l'entête est composée de trois lignes. Celà donnerait
=INDEX(prenom;EQUIV(GRANDE.VALEUR(table;LIGNE()-LIGNES(1:3));table;0))

LIGNE() ou LIGNE(A4) renvoi le numéro de la ligne -> 4
LIGNES(1:3) renvoi le nombres de lignes de la plage ->3

@+Jean-Marie
 
Merci à tous pour ce précieux coup de main. J'ai testé la méthode de Monique qui me paraît fonctionner parfaitement. Je vais essayer de l'améliorer avec le schéma de Jean Pierre afin de gagner un peu de temps, mon tableau étant composé de 200 lignes et de 8 colonnes !
 
Bonjour,
J'ai un problème pour trier une plage de cellules selon la valeur d'une autre plage. En effet tout fonctionne parfaitement selon la méthode expliquée ci-dessus SAUF quand j'ai des valeurs identiques dans la colonne de référence. Existe-t-il une solution pour ce problème ?

Exemple : si j'ai 3 cellules qui ont pour valeur 3 ; 2 et 2 , qui correspondent aux lettres a pour la première b pour la seconde et c pour la troisième, j'aurai après classement décroissant a correspond à 3, b correspond à 2 et b au lieu de c correspond à 2.
 
Bonjour,

En cas d'ex aequo, en effet, ça donne des résultats non valables.
Je l'avais remarqué puis je n'y ai plus pensé.

Pour que les ex aequo aient chacun leur cellule, tu peux essayer ceci :
=INDEX(prenom;EQUIV(GRANDE.VALEUR(table+LIGNE()/100000;LIGNE());table+LIGNE()/100000;0))
Tu sélectionnes autant de cellules que de noms à trier.
Tu écris cette formule.
Tu valides par ctrl + maj + entrée.

Le nombre 100000 est du pifomètre, une "marge de sécurité".
C'est pour éviter des erreurs au cas où tu aurais 65536 ex aequo.
 
Tout d'abord, je tiens à vous remercier pour votre réactivité.
Je vais essayer cette nouvelle formule, j'espère que je parviendrai à l'appliquer. Je vous tiendrai informé dans l'après-midi.
Merci encore.
 
Re-bonjour,

C'est un truc qui a été précisé par Jean-Marie dans un des messages précédents et je ne l'ai pas refait.

Si on démarre la colonne à la ligne 1, voici la formule :
=INDEX(prenom;EQUIV(GRANDE.VALEUR(table+LIGNE()/100000;LIGNE());table+LIGNE()/100000;0))
Si on démarre à la ligne 2
=INDEX(prenom;EQUIV(GRANDE.VALEUR(table+LIGNE()-LIGNES(1:1)/100000;LIGNE()-LIGNES(1:1));table+LIGNE()-LIGNES(1:1)/100000;0))
Si on démarre à la ligne 3
=INDEX(prenom;EQUIV(GRANDE.VALEUR(table+LIGNE()-LIGNES(1:2)/100000;LIGNE()-LIGNES(1:2));table+LIGNE()-LIGNES(1:2)/100000;0))
Dans les 2è et 3è formules, la formule laisse tomber LIGNES(1:1) ou LIGNES(1:2) et démarre le compte juste après.

NB - LIGNES(1:etc) est au pluriel, même s'il n'y a qu'une ligne.
 
Bonjour,
J'ai réussi à faire fonctionner la dernière formule mais elle ne résoud pas mon problème. A une valeur répétée dans la seconde colonne, j'obtiens toujours la même dans la première.
Peut-être avez-vous une autre solution ?
Merci
 
Bonjour,

Aïe, il manquait une parenthèse autour de "LIGNE()-LIGNES(1:2)"
C'est donc la même solution, avec 2 paires de parenthèses en plus.

Au lieu de ça :
=INDEX(prenom;EQUIV(GRANDE.VALEUR(table+LIGNE()-LIGNES(1:2)/100000;LIGNE()-LIGNES(1:2));table+LIGNE()-LIGNES(1:2)/100000;0))
c'est ça :
=INDEX(prenom;EQUIV(GRANDE.VALEUR(table+(LIGNE()-LIGNES(1:2))/100000;LIGNE()-LIGNES(1:2));table+(LIGNE()-LIGNES(1:2))/100000;0))

Sauf erreur...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
14
Affichages
477
Réponses
5
Affichages
434
Réponses
17
Affichages
967
Réponses
5
Affichages
543
  • Question Question
Microsoft 365 Souci de copie
Réponses
8
Affichages
262
Retour