Trier en ligne - Excel

lavjau Messages postés 3 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 8 août 2011 - 4 août 2011 à 17:39
lavjau Messages postés 3 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 8 août 2011 - 8 août 2011 à 17:00
Bonjour à tous,

Je sollicite votre aide car je me prends la tête sur une macro Excel (le dev c'est pas trop mon point fort). ;(
J'ai un tableau rempli de chiffres que j'aimerai trier du plus petit au plus grand en ligne (sachant que je peux avoir des milliers de lignes et des dizaines de colonnes).

Je me suis inspiré d'une macro que j'ai trouvé sur le net pour faire une macro qui trie mais en colonne (qui fonctionne très bien d’ailleurs) :

Sub Tri()
'
' Tri Macro
'

'
Dim maplage As Range, i As Byte
For i = 1 To 50
    If ActiveCell = "" Then
      i = i + 1
    Else
      Set maplage = Range(Cells(2, i), Cells(Cells(65536, i).End(xlUp).Row, i))
      maplage.Sort Key1:=Cells(2, i), Order1:=xlAscending, _
      Orientation:=xlTopToBottom
    End If
Next i
End Sub


Le soucis est que je n'arrive pas à l'adapter pour un tri en ligne.
Je pensais modifier la "xlTopToBottom" en "xlLeftToRight" puis jouer sur les "Range" mais je n'y arrive pas...

Pouvez-vous m'aiguiller ou m'aider à la modifier svp?

Merci !!

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 août 2011 à 18:03
Bonjour,
Surtout si l'on est débutant : On utilise l'enregistreur de macros ===>> on fait les gestes à la main ===>> on arrête l'enregistreur ===>> puis on va voir le code écrit dans la macro enregistrée.
Commence par là et reviens si nécessaire.


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
lavjau Messages postés 3 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 8 août 2011
5 août 2011 à 18:45
En "farfouillant" sur le net, j'ai trouvé une macro qui fonctionne très bien (je me suis finalement laissé tenter par la facilité :| )

Je vous laisse le code si ça peut aider quelqu'un d'autre :

Sub test()
Dim DerLig As Long, DerCol As Integer
Dim Rg As Range, R As Range
With Feuil1
If Not IsEmpty(.UsedRange) Then
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row

DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
End If
Set Rg = .Range("A2", .Cells(DerLig, DerCol))
End With

Application.ScreenUpdating = False
Application.EnableEvents = False
For Each R In Rg.Rows
LeTriHorizontal R
Next
Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub
'----------------------------------------
Sub LeTriHorizontal(Plg As Range)
With Plg
.Sort Key1:=.Range("A1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, Orientation:=xlLeftToRight, DataOption1:=xlSortNormal
End With
End Sub
'----------------------------------------


Merci à tous pour votre aide !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
5 août 2011 à 20:25
Hé ! bé !
je suis certain de ce que si tu cherches encore un peu tu trouveras encore plus tortueux !
Et tu tries chaque ligne ? Une par une, en plus ?

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
lavjau Messages postés 3 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 8 août 2011
8 août 2011 à 17:00
Oulà, plus tortueux !!

Oui cette macro trie ligne par ligne et normalement à l'infini !
0
Rejoignez-nous