Problème sur excel - créer une fonction

comment peut-on trier une plage de données sur cinq colonnes dans excel

exemple: 5colonnes (ou plus)de 5 nombres (ou plus)à trier par ligne sans utiliser le tri automatique d’excel qui ne propose le tri que sur 3 lignes ou colonnes. Existe t’il une fonction ou macro.
4 12 53 6 21 pour avoir 4 6 12 21 53
9 30 2 55 67 en une opération 2 9 30 55 67
6 5 4 9 7 1 1 4 5 6 7 9
12 4 21 43 6 4 6 12 21 43

Tu veu mettre dan l’ordre les lignes ou les colonnes?

Si tu crée une macro sa marche, jen suis sur

 Columns("A:A").Select
    Range("A:A").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

Pour la suite tu remplace la lettre de la colonne par la suivante
donc a la place de à i fo mettre B puis ainsi de suite

merci momo pour ta réponse,
je viens de la lire et je vais la mettre en oeuvre demain pour voir si ça fonctionne.
Je te donnerai le résultat et de plus amples informations si c’est utile.

C’est fait je l’ai essayé, mais ça ne résout pas mon problême.
En appliquant la macro, je le fais ligne par ligne ou colonne par colonne, si j’ai 200 lignes je suis obligé de répéter la macro 200 fois. Mon but c’est de ranger toutes les lignes en même temps.
Peut-être que ce n’est pas possible?
Merci encore

:hello:
voila ce qu’il te faut:

For Each Column In Selection
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
   Next

Attention ne prend pas les colonnes entieres mais seulement la portion ou se trouvent tes données
:slight_smile:

salut pierrejean
j’ai essayé ta solution, ça ne fonctionne que sur la 1ère colonne A.
Je ne’my connais pas trop en visual b mais il me semble que dans la formule:
=Range(“A1”),
empêche le classement des autres colonnes.

http://www.clubic.com/forum/style_images/1…icons/icon8.gif
merci

toutes mes excuses pour t’avoir donné une solution insuffisament testée
(il est curieux de constater que cela a fonctionné au moins une fois)
voici quelque chose d’un peu plus travaillé
teste et tiens moi au courant

For Each col In Selection.Columns
  col.Sort Key1:=Cells(1, col.Column), Order1:=xlDescending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
 Next

edit: suppose que la selection commence à la 1ere ligne sinon modifier
Cells(1,col…) : remplacer 1 par le numero de la ligne de depart
je suppose que tu as compris qu’avant de lancer la macro il te faut selectionner la zone contenant tes données
si tu souhaites trier par lignes plutot que par colonne je pourrais t’indiquer les changements à faire
:slight_smile:

:hello:
version avec classement ascendant et detection de la 1ere ligne de la selection

For Each c In Selection.Cells
ligne = c.Row
Exit For
Next
 For Each col In Selection.Columns
  col.Sort Key1:=Cells(ligne, col.Column), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
 Next
End Sub

:slight_smile:

Bonjour pierrejean
Merci pour ta réponse ultra rapide .
Je vais l’essayer et te dirais ensuite plus tard car j’ai un problème de réseau avec les télécom sur adsl, donc je suis branché sur modem 56K comme il y a cent ans.
A plus :??:

Salut à tous
je remercie momo et pierrejean pour leur aide.
La solution de pierrejean fonctionne dans les deux sens.
Impeccable
Merci encore bob :bounce: