Macro Excel - Tri en ligne
lavjau
-
lavjau -
lavjau -
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) :
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 !!
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 !!
A voir également:
- Macro Excel - Tri en ligne
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Comment faire un tri personnalisé sur excel - Guide
- Partager photos en ligne - Guide
- Liste déroulante excel - Guide
- Mètre en ligne - Guide
4 réponses
Bonjour,
d'après cette astuce, on peut définir le tri selon les lignes au lieu des colonnes.
Le mieux pour réussir ton code serait d'utiliser l'enregistreur de macro et de faire un simple tri en ligne de tes données. Ca te permettrait déjà d'avoir une bonne base pour réaliser le tri que tu souhaites faire.
Cordialement.
d'après cette astuce, on peut définir le tri selon les lignes au lieu des colonnes.
Le mieux pour réussir ton code serait d'utiliser l'enregistreur de macro et de faire un simple tri en ligne de tes données. Ca te permettrait déjà d'avoir une bonne base pour réaliser le tri que tu souhaites faire.
Cordialement.
Merci de ta réponse rapide.
J'ai testé en utilisant l'enregistreur de macros (Excel 2010):
1 - Je sélectionne mon tableau
2 - Tri personnalisé
3 - Options
4 - Tri de gauche à droite
5 - Ok
Mais le tri ne fonctionne que sur la première ligne et en plus je trouve que c'est un peu le "bordel" niveau code et j'ai dû mal à comprendre les fonctions.
Je pense que je dois voir autour de "Range(Cells(2, i)" mais pas facile à adapter quand on commence...
J'ai testé en utilisant l'enregistreur de macros (Excel 2010):
1 - Je sélectionne mon tableau
2 - Tri personnalisé
3 - Options
4 - Tri de gauche à droite
5 - Ok
Mais le tri ne fonctionne que sur la première ligne et en plus je trouve que c'est un peu le "bordel" niveau code et j'ai dû mal à comprendre les fonctions.
Je pense que je dois voir autour de "Range(Cells(2, i)" mais pas facile à adapter quand on commence...
Bonsoir,
Mais le tri ne fonctionne que sur la première ligne
C'est normal, la ligne est triée et les valeur qui correspondent en dessous suivent
Comme quand tu tries des colonnes, tu as une clé de tri et les données correspondantes suivent...
Si tu veux trier individuellement les lignes il faut les faire une par une
eric
Mais le tri ne fonctionne que sur la première ligne
C'est normal, la ligne est triée et les valeur qui correspondent en dessous suivent
Comme quand tu tries des colonnes, tu as une clé de tri et les données correspondantes suivent...
Si tu veux trier individuellement les lignes il faut les faire une par une
eric
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 :
Merci à tous pour votre aide !
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 !