Bonjour,
Je souhaiterais faire un tri d'entreprises sur les cellules sélectionnées et selon des critères bien définis.
Le tri devra s'appliquer à la ligne entière.
- Cellules fonds verts et ordre alphabétique en premier.
- Cellules avec textes noirs et ordre alphabétique en deuxième.
- Cellules avec textes rouges et ordre alphabétique en troisième.
Voici une ébauche d'un code qui tri les cellules actives en ordre alphabétique.
Sub tri()
'Macro tri
Dim col As Byte
Dim plage As Range
Set plage = ActiveCell.CurrentRegion
col = ActiveCell.Column
With ThisWorkbook.ActiveSheet.Sort
.SortFields.Clear
.SortFields.Add Key:=Cells(, col), SortOn:=xlSortOnValues, Order:=xlAscending
.SetRange plage
.Header = xlNo
On Error Resume Next
.Apply
End With
End Sub
Voici un code obtenu avec l'outil "enregistrer une macro".
Sub Macro2()
'
' Macro2 Macro
'
'
Range("B3:C9").Select
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add(Range("B4:B9"), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(112, _
173, 71)
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add(Range("B4:B9"), _
xlSortOnFontColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(0, 0, 0 _
)
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add2 Key:=Range("B4:B9") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("B3:C9")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Je vous joins aussi un fichier Excel avec l'exemple.
Auriez-vous une idée et solution pour unir les deux codes ?