[CALC] tri de nombre par ordre croissant par formule

Bonjour,

Dans calc, j'ai une colonne avec une série de nombre qui sont dans un ordre plus ou moins aléatoire (ni par ordre croissant, ni par ordre décroissant).
Je voudrais, dans une autre colonne, avoir la même liste de nombre mais classée par ordre croissant.
Pour faire cela, je voudrais utiliser que des formules (min, max, petites.valeurs, index, equiv, ...), pas de macro, pas de clic sur des boutons, ...

Est-ce que quelqu'un aurais une idée ?
Pour l'instant je n'y arrive pas...

Voici un exemple :

    Données Données
    non triées triées

1001001001001 1001001001001
1001001001003 1001001001003
1001001001005 1001001001005
1001001001007 1001001001007
1003003003009 1001003003015
1003003003009 1003003003009
1003003003011 1003003003009
1005003003013 1003003003009
1003003003009 1003003003009
1003003003009 1003003003011
1001003003015 1003003003011
1003003003011 1003003003011
1003003003011 1005003003013
3007005005017 3007005005017

Je travaille avec :
LibreOffice, Version: 4.2.6.2, Build ID: 185f2ce4dcc34af9bd97dec29e6d42c39557298f
PC sous windows seven, anglais ou français, 32 ou 64 bits et windows XP

Merci d'avance.
Cordialement.
Hervé ROUSSEL

Bonjour,

Utiliser la fonction "GRANDE.VALEUR" peut être une solution

  *A* *B* *C*
/2/ 1001001001001 29 1001001001001 '=GRANDE.VALEUR($A$2:$A$30;B2)
/3/ 1001001001001 28 1001001001001 '=GRANDE.VALEUR($A$2:$A$30;B3)
/4/ 1001001001003 27 1001001001003 '=GRANDE.VALEUR($A$2:$A$30;B4)
/5/ 1001001001003 26 1001001001003 '=GRANDE.VALEUR($A$2:$A$30;B5)
/6/ 1001001001005 25 1001001001005 '=GRANDE.VALEUR($A$2:$A$30;B6)
/7/ 1001001001005 24 1001001001005 '=GRANDE.VALEUR($A$2:$A$30;B7)
/8/ 1001001001005 23 1001001001005 '=GRANDE.VALEUR($B$2:$B$30;C8)
/9/ 1001001001007 22 1001001001007 '=GRANDE.VALEUR($B$2:$B$30;C9)
/10/ 1001001001007 21 1001001001007 '=GRANDE.VALEUR($B$2:$B$30;C10)
/11/ 1001001001007 20 1001001001007 '=GRANDE.VALEUR($B$2:$B$30;C11)
/12/ 1001001001007 19 1001001001007 '=GRANDE.VALEUR($B$2:$B$30;C12)
/13/ 1003003003009 18 1001003003015 '=GRANDE.VALEUR($B$2:$B$30;C13)
/14/ 1003003003009 17 1001003003015 '=GRANDE.VALEUR($B$2:$B$30;C14)
/15/ 1003003003009 16 1003003003009 '=GRANDE.VALEUR($B$2:$B$30;C15)
/16/ 1003003003011 15 1003003003009 '=GRANDE.VALEUR($B$2:$B$30;C16)
/17/ 1003003003011 14 1003003003009 '=GRANDE.VALEUR($B$2:$B$30;C17)
/18/ 1005003003013 13 1003003003009 '=GRANDE.VALEUR($B$2:$B$30;C18)
/19/ 1003003003009 12 1003003003009 '=GRANDE.VALEUR($B$2:$B$30;C19)

... etc

En utilisant les fonctions LIGNE et NBVAL, on peut même se passer de la colonne qui donne l'indice (colonne B)

Quelque chose comme =GRANDE.VALEUR($A$2:$A$30;NBVAL($A$2:$A$30)-(LIGNE(B2)-2)) dans mon cas, pour une première formule en B2

/Cordialement/

//

Bonjour,

Dans calc, j'ai une colonne avec une série de nombre qui sont dans un ordre plus ou moins aléatoire (ni par ordre croissant, ni par ordre décroissant).
Je voudrais, dans une autre colonne, avoir la même liste de nombre mais classée par ordre croissant.
Pour faire cela, je voudrais utiliser que des formules (min, max, petites.valeurs, index, equiv, ...), pas de macro, pas de clic sur des boutons, ...

Est-ce que quelqu'un aurais une idée ?
Pour l'instant je n'y arrive pas...

Bonjour,
Un exemple ancien (le site n'est plus mis à jour) sur cette page :
http://christianwtd.free.fr/index.php?rubrique=AstucesCalc03
dans : "Loterie. Tirage au sort"
pourra peut-être t'aider.

Merci d'avance.
Cordialement.
Hervé ROUSSEL

Bon surf,
Christian

Bonjour Christian,

Merci de ton retour qui fonctionne très bien !
J'avais essayé d'utilisé les fonctions "petite.valeur" et/ou "grande.valeur" sans succès...
En fait je n'avais pas bien compris comment ces fonctions fonctionnaient. Ton exemple m'a été très utile.

Ce qui me gênait dans ton exemple c'est qu'il fallait connaître le nombre de valeur (par la fonction nbval).
Je me suis replongé dans la fonction "petite.valeur" et j'ai adapté ton exemple. Pour des valeurs non triées dans la colonne A (de la cellule A2 à la cellule A40), j'ai saisie la formule "=Petite.Valeur($A$2:$A$40,ligne(B2)-2+1)" dans la case B2 et j'ai copié cette formule jusqu'à la cellule B40.
J'obtiens alors bien les valeurs triées dans la colonne B !

Merci beaucoup pour ton aide !
Cordialement.
Hervé ROUSSEL

Bonjour Christian,

Merci de me rappeler que ton site existe et que je l'oubli à chaque fois... !!!!
J'ai regardé ce que tu me proposes, je pense que cela pourrait fonctionner.
Entre temps, j'ai eu le retour d'un autre Christian :wink: avec la fonction "Grande.Valeur" qui fonctionne.

Merci beaucoup d'avoir pris le temps de me répondre.
Cordialement.
Hervé ROUSSEL

-----Message d'origine-----

Bonjour,
Oui cela fonctionne aussi mais je voulais trouver une solution automatique.
Merci pour votre réponse.
Cordialement.
Hervé