Sub Tri_H()
Dim Plg As Range
Dim DerCol As Long, DerLig As Long
With Worksheets("Feuil1")
DerCol = .Cells(5, Columns.Count).End(xlToLeft).Column
DerLig = .Cells.SpecialCells(xlCellTypeLastCell).Row
Set Plg = .Range("L1").Resize(DerLig, DerCol - 11)
.Sort.SortFields.Clear
.Sort.SortFields.Add(Plg.Rows(5), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = .Range("L5").Interior.Color
.Sort.SetRange Plg
.Sort.Header = xlYes
.Sort.Orientation = xlLeftToRight
.Sort.Apply
End With
End Sub
Bonjour,
Avec ce code (obtenu pratiquement avec l'enregistreur de macros)
J'ai supposé la dernière colonne en AA, donc plage de L à AA
VB:
Sub Tri_H()
Dim Plg As Range
Set Plg = Range("A5").CurrentRegion.Offset(, 11).Resize(, 16)
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SortFields.Clear
.SortFields.Add(Plg.Rows(1), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, 255, 0)
.SetRange Plg
.Header = xlYes
.Orientation = xlLeftToRight
.Apply
End With
End Sub
Un grand merci pour ton retour. Ca fonctionne nikel mais le problème c'est que je sais jamais quelle sera la couleur, la dernière colonne et la dernière ligne ça varie en fonction des données
Bonjour,
Avec ce code (obtenu pratiquement avec l'enregistreur de macros)
J'ai supposé la dernière colonne en AA, donc plage de L à AA
VB:
Sub Tri_H()
Dim Plg As Range
Set Plg = Range("A5").CurrentRegion.Offset(, 11).Resize(, 16)
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SortFields.Clear
.SortFields.Add(Plg.Rows(1), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, 255, 0)
.SetRange Plg
.Header = xlYes
.Orientation = xlLeftToRight
.Apply
End With
End Sub
Bonjour,
Pour la dernière colonne, calcul rajouté - Toujours sur la base de la première colonne à trier -> colonne "L" (soit 11ème colonne)
Pour la couleur de tri, voir avec une voyante...
Ou donner un tout petit peu plus de précisions (méthode de choix)
VB:
Sub Tri_H()
Dim Plg As Range
Dim DerCol As Long
DerCol = Worksheets("Feuil1").Cells(5, Columns.Count).End(xlToLeft).Column
Set Plg = Range("A5").CurrentRegion.Offset(, 11).Resize(, DerCol - 11)
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SortFields.Clear
.SortFields.Add(Plg.Rows(1), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, 255, 0)
.SetRange Plg
.Header = xlYes
.Orientation = xlLeftToRight
.Apply
End With
End Sub
Bonjour,
Pour la dernière colonne, calcul rajouté - Toujours sur la base de la première colonne à trier -> colonne "L" (soit 11ème colonne)
Pour la couleur de tri, voir avec une voyante...
Ou donner un tout petit peu plus de précisions (méthode de choix)
VB:
Sub Tri_H()
Dim Plg As Range
Dim DerCol As Long
DerCol = Worksheets("Feuil1").Cells(5, Columns.Count).End(xlToLeft).Column
Set Plg = Range("A5").CurrentRegion.Offset(, 11).Resize(, DerCol - 11)
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SortFields.Clear
.SortFields.Add(Plg.Rows(1), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, 255, 0)
.SetRange Plg
.Header = xlYes
.Orientation = xlLeftToRight
.Apply
End With
End Sub
C'est bon ça fonctionne merci beaucoup CousinHub pour ton aide !!!!!!!!
Voici le code Finale pour ceux que ça intéresse.
VB:
Sub Tri_H()
Dim Plg As Range
Dim DerCol As Long
DerCol = Worksheets("Feuil1").Cells(5, Columns.Count).End(xlToLeft).Column
Set Plg = Range("A5").CurrentRegion.Offset(, 11).Resize(, DerCol - 11)
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SortFields.Clear
.SortFields.Add(Plg.Rows(1), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = Range("L5").Interior.Color
.SetRange Plg
.Header = xlYes
.Orientation = xlLeftToRight
.Apply
End With
End Sub
Re-,
Comment tu déroules le code?
En mode pas-à-pas, ou en auto?
Si en mode pas-à-pas, il faut bien aller jusqu'à ".Apply"
Sinon, est-ce que l'onglet se nomme bien "Feuil1"?
Et est-ce que cet onglet est bien activé?
Essaie en remplaçant ainsi :
VB:
Sub Tri_H()
Dim Plg As Range
Dim DerCol As Long
With Worksheets("Feuil1")
DerCol = .Cells(5, Columns.Count).End(xlToLeft).Column
Set Plg = .Range("A5").CurrentRegion.Offset(, 11).Resize(, DerCol - 11)
.Sort.SortFields.Clear
.Sort.SortFields.Add(Plg.Rows(1), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = .Range("L5").Interior.Color
.Sort.SetRange Plg
.Sort.Header = xlYes
.Sort.Orientation = xlLeftToRight
.Sort.Apply
End With
End Sub
Re-,
Comment tu déroules le code?
En mode pas-à-pas, ou en auto?
Si en mode pas-à-pas, il faut bien aller jusqu'à ".Apply"
Sinon, est-ce que l'onglet se nomme bien "Feuil1"?
Et est-ce que cet onglet est bien activé?
Essaie en remplaçant ainsi :
VB:
Sub Tri_H()
Dim Plg As Range
Dim DerCol As Long
With Worksheets("Feuil1")
DerCol = .Cells(5, Columns.Count).End(xlToLeft).Column
Set Plg = .Range("A5").CurrentRegion.Offset(, 11).Resize(, DerCol - 11)
.Sort.SortFields.Clear
.Sort.SortFields.Add(Plg.Rows(1), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = .Range("L5").Interior.Color
.Sort.SetRange Plg
.Sort.Header = xlYes
.Sort.Orientation = xlLeftToRight
.Sort.Apply
End With
End Sub
Sub Tri_H()
Dim Plg As Range
Dim DerCol As Long, DerLig As Long
With Worksheets("Feuil1")
DerCol = .Cells(5, Columns.Count).End(xlToLeft).Column
DerLig = .Cells.SpecialCells(xlCellTypeLastCell).Row
Set Plg = .Range("L5").Resize(DerLig - 4, DerCol - 11)
.Sort.SortFields.Clear
.Sort.SortFields.Add(Plg.Rows(1), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = .Range("L5").Interior.Color
.Sort.SetRange Plg
.Sort.Header = xlYes
.Sort.Orientation = xlLeftToRight
.Sort.Apply
End With
End Sub
Sub Tri_H()
Dim Plg As Range
Dim DerCol As Long, DerLig As Long
With Worksheets("Feuil1")
DerCol = .Cells(5, Columns.Count).End(xlToLeft).Column
DerLig = .Cells.SpecialCells(xlCellTypeLastCell).Row
[/QUOTE]
[QUOTE="Cousinhub, post: 20633242, member: 13730"]
Set Plg = .Range("L5").Resize(DerLig - 4, DerCol - 11)
.Sort.SortFields.Clear
.Sort.SortFields.Add(Plg.Rows(1), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = .Range("L5").Interior.Color
.Sort.SetRange Plg
.Sort.Header = xlYes
.Sort.Orientation = xlLeftToRight
.Sort.Apply
End With
End Sub
Alors là le tri fonctionne mais à moitié
En faite le tri doit se faire par couloir (situer à L5)
mais il doit prendre en compte aussi les lignes de 1 à 4 exemple le tri doit se faire de la colonne L1 à L(dernière ligne) ( en gros toute la colonne doit bouger)