Tri croissant horizontal

[Résolu/Fermé]
Signaler
Messages postés
469
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
21 juin 2017
-
 jojo -
Bonjour,
Sous Excel 2003
Existe t-il une méthode qui permettrait de trier non plus sur un champ en colonne, mais sur un champ en ligne
J'ai des mots décomposés en lettre et je souhaiterais pouvoir classer ces lettres dans l'odre croissant sur la même ligne que le mot décomposé sans le faire à la mimine.

J'ai essayé ça (pioché avec la recherche)

"Pour trier les données horizontalement, il suffit de sélectionner les données à trier, puis de cliquer sur le bouton Options et, dans le panneau "Orientation" de spécifier "De la gauche vers la droite" !" publié en 2006

mais je n'ai pas de panneau orientation dans le menu Outils\Options.
J'ai un panneau 'Transition' ou j'ai pu retrouver " De la gauche vers la droite", mais cette option est déjà cochée

Merci de l'aide ou des pistes que vous saurez m'apporter.

5 réponses

Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
620
Bonjour,

Oui c'est possible en Excel 2003. Il faut selectionner les cellules à trier en ligne puis aller dans le menu :
Données / Trier et dans la fenêtre qui s'affiche cliquer sur le bouton "Options" en bas à gauche.
Là il y a une rubrique orientation qui permet de cocher la case "de la gauche vers la droite"

A+
5
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

merci cé top
Messages postés
469
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
21 juin 2017
124
Salut
Forcément, si je ne regarde pas au bon endroit, je ne peux pas voir.
Merci pour ce complément et naturellement ça marche.

Maintenant, je voudrait pouvoir faire la manip ligne par ligne (environ 1500), pas la peine de dire que je préférerais automatiser un peu celà.
J'ai essayer par macro en recopiant le code ci dessous (en gras) et en y ajoutant le reste, masi je bute sur "Selection.Sort Key1:=Range("d2"),". Je continue de chercher,mais si quelqu'un pouvait me faire gagner un peu de temps.... je suis preneur.
Mon champ commence en D2 et termine en AC1512

ActiveSheet.Select
Range("D2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
For Each Row In ActiveSheet
</gras>Selection.Sort Key1:=Range("d2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal</gras>
Next

J'ai également tenté avec While, mais je ne suis pas parvenu à trouver la bonne méthode pour identifier
Sort Key1:= Range.
Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
620
Bonjour,

Je ne sais pas si il y a plus simple mais j'ai trouvé un code qui fonctionne :
For LIGNE = 2 To 1512
Range("D" & LIGNE & ":AC" & LIGNE).Select
Selection.Sort Key1:=Range("D" & LIGNE), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
        DataOption1:=xlSortNormal
Next LIGNE


A+
Messages postés
469
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
21 juin 2017
124
Yo
Merci à Pilas 31 pour m'avoir mis sur la voie
J'ai modifier son code pour comme suit
ActiveSheet.Select
x = 2
While Cells(x, 4).Value <> ""
Range("D" & x, "AC" & x).Select
Selection.Sort Key1:=Range("d" & x), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
x = x + 1
Wend

Celà me permet de trier Ligne par Ligne
Le code proposé me triait le tableau complet et je revenait au même résultat.

J'essaie maintenant de ne pas retenir les vides, mes mots étant de longueur différentes
Messages postés
469
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
21 juin 2017
124
Voilà, c'est fait
Le code adapté pour trier ligne par ligne en fonction de la longuer du mot
Comme j'avais en colonne A le nombre de caractères de mon mot, ce fût assez simple

ActiveSheet.Select
x = 2
While Cells(x, 4).Value <> ""
y = Cells(x, 1).Value + 3
Range(Cells(x, 4), Cells(x, y)).Select
Selection.Sort Key1:=Range("d" & x), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
x = x + 1
Wend

Merci encore Pilas 31

Petite précision : ne supprime pas les vides qui seraient à l'intérieur d'un chaîne. Ex 'Jour de l'an' placera en premier les deux espaces.