Tri horizontal en VBA

Bonjour, je débute sur les macros VBA (et sur ce forum) et j'aimerais savoir comment faire un tri horizontal (tri par ligne) par couleur en VBA.

SACHANT QUE :

  • Je suis attaché à ce tri horizontal et je ne souhaite pas inverser le sens de mon tableau pour un tri par colonne
  • Mon tableau comportera un nombre de colonne variable par ligne

Je connais la manip manuelle pour faire ce tri, du coup j'ai enregistré une macro et j'ai essayé sur une ligne pour voir. J'ai donc effectué la commande Ctrl+Shift+flèche de droite, et fait un tri horizontal sur cette dernière. Et j'obtiens le script suivant :

Sub Macro6()
'
' Macro6 Macro
'

'
    Range("B1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add(Range("B1:G1"), _
        xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, 0 _
        , 0)
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add(Range("B1:G1"), _
        xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, _
        192, 0)
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add(Range("B1:G1"), _
        xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, _
        255, 0)
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add(Range("B1:G1"), _
        xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(0, 176 _
        , 80)
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add(Range("B1:G1"), _
        xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(217, _
        217, 217)
    With ActiveWorkbook.Worksheets("Feuil1").Sort
        .SetRange Range("B1:G1")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Mon problème, c'est qu'à la quatrième ligne, la macro sélectionne les cellules B1 à G1. Or, moi je veux qu'il ne considère pas G1 mais la dernière cellule non vide, puisque mon tableau va évoluer et s'agrandir en cellules.

Savez-vous si c'est possible ?

Cordialement.

Bonjour,

dernière ligne renseignée en prenant en compte la colonne 1 en référence :

Der_Ligne = Cells(Cells.Rows.Count,1).End(xlUp)

pour les colonnes c'est presque la même chose, en prenant en compte la ligne 1 comme référence

Der_Colonne = Cells(1,Cells.Columns.Count).End(xlLeft)

@ bientôt

LouReeD

Merci de t'être donné la peine de me répondre LouReed !

Comme j'ai encore beaucoup de bases à apprendre, je vais tenter quelque chose et je reviendrai vers toi.

Porto77

Rechercher des sujets similaires à "tri horizontal vba"