Re
Si on laisse en plage
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SortFields.Add Key:=Range("A:A"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=Range("B:B"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Range("A1:D30")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
Si on met sous forme de tableau (ce qui simplifie notamment l'ajout de ligne et la duplication automatique des formats, validations et formules)
With ActiveWorkbook.Worksheets("Feuil1").ListObjects("Tableau1").Sort
.SortFields.Clear
.SortFields.Add Key:=Range("Tableau1[Catégorie]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=Range("Tableau1[objet]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
En adaptant le nom du tableau qu'il est préférable de nommer clairement