Tri plusieurs Lignes

  • Initiateur de la discussion Virginie
  • Date de début
V

Virginie

Guest
Je souhaite réaliser un tri par ordre croissant d'horaires sur une centaine de lignes. Problème rencontré : quand je sélectionne l'ensemble de la table et que je demande un tri par ligne, Excel trie par ordre croissant les données de la première ligne, ce qui déplace l'ensemble des chiffres situés en-dessous, mais non par ordre croissant (car Excel considère que les chiffres d'en dessous sont liés aux chiffres de la première ligne).
Pour pouvoir effectuer le tri par ordre croissant de toutes les lignes, il est nécessaire que je sélectionne les lignes une par une, et que je fasse le tri pour chaque ligne.
Existe-t-il une solution pour automatiser ce tri pour toutes les lignes ?
Merci par avance pour votre aide !
 
J

Jacques

Guest
Bonsoir Virginie,

Je crois que ton problème vient des options de tri qui sont enregistrés sur ta machine.

Si tu veux, comme je crois l'avoir compris, trier de la ligne 1 à la ligne 100 de sorte que les données de la colonne 1 soient en ordre croissant, sélectionne les lignes 1 à 100,
vas dans le menu données/trier
là dans la boîte de dialogue tu dois avoir comme première clé "colonne A".
Si ce n'est pas le cas (et qu'à la place tu as "ligne A") il faut que tu cliques sur le bouton Options et là choisis l'option orientation du haut vers le bas (au lieu de la gauche vers la droite) puis valide.
Normalement tu devrais alors faire le tri que tu souhaites.

Bonne soirée
 
R

Ronan Quennec

Guest
Voici une macro qui pourrais je pense te rendre un grand service


Sub tri_croissant()

'Obligation avant de lancer la macro de sélectionner en premier
' lieu la première ligne du tableau

Dim cellule2 As Range

cellule = InputBox("Indiquez la première ligne à selectionner sous la forme (a1:a6)")

Set cellule2 = Range(cellule)

ligne = cellule2.Row
colonnedebut = cellule2.Column
colonnefin = Cells(ligne, 256).End(xlToLeft).Column

Do Until Cells(ligne, colonnedebut).Value = ""

a = Cells(ligne, colonnedebut).AddressLocal
b = Cells(ligne, colonnefin).AddressLocal

Range(a, b).Select

Selection.Sort Key1:=Range("B" & ligne), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight

ligne = ligne + 1

Loop

Range("a1").Select

MsgBox "Tri terminé"

End Sub
 

Statistiques des forums

Discussions
312 038
Messages
2 084 824
Membres
102 682
dernier inscrit
ing_dupree