1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
Sub TestTriSelonColonnesAetB()
TriSelonColonnesAetB Sheets("Feuil1"), 1
MsgBox "Fin du tri !", vbInformation
End Sub
Sub TriSelonColonnesAetB(ByVal FeuilleATrier As Worksheet, LigneDeTitre As Long)
Dim I As Long, DerniereLigne As Long, ColonneTri As Long
Dim AireATrier As Range
Dim AireColonneATrier As Range
Application.ScreenUpdating = False
With FeuilleATrier
ColonneTri = .Cells(LigneDeTitre, .Columns.Count).End(xlToLeft).Column + 1
.Cells(LigneDeTitre, ColonneTri) = "Tri"
DerniereLigne = .Cells.SpecialCells(xlCellTypeLastCell).Row
If DerniereLigne = LigneDeTitre Then Exit Sub
For I = LigneDeTitre + 1 To DerniereLigne
.Cells(I, ColonneTri) = Left(.Cells(I, 1), 1) & .Cells(I, 2)
Next I
Set AireATrier = .Range(.Cells(LigneDeTitre, 1), .Cells(DerniereLigne, ColonneTri))
Set AireColonneATrier = .Range(.Cells(LigneDeTitre, ColonneTri), .Cells(DerniereLigne, ColonneTri))
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=AireColonneATrier, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With .Sort
.SetRange AireATrier
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
AireColonneATrier.Clear
Set AireColonneATrier = Nothing
Set AireATrier = Nothing
End With
Application.ScreenUpdating = True
End Sub |
Partager