Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
With Range("A1:AG" & Application.Match([9^9], [A:A]))
.Columns(34).Insert xlToRight 'colonne auxiliaire
.Columns(34) = "=(ROW()>1)*(RC[-3]<>""Put"")"
.Columns(34) = .Columns(34).Value 'supprime les formules
If Application.Sum(.Columns(34)) = 0 Then _
.Sort .Columns(32), xlDescending, Header:=xlYes: GoTo 1
.Columns(34) = "=(ROW()>1)*(RC[-3]<>""Call"")"
.Columns(34) = .Columns(34).Value 'supprime les formules
If Application.Sum(.Columns(34)) = 0 Then _
.Sort .Columns(32), xlAscending, Header:=xlYes: GoTo 1
.Columns(34) = "=(ROW()>1)*(RC[-1]<>R2C[-1])"
.Columns(34) = .Columns(34).Value 'supprime les formules
If Application.Sum(.Columns(34)) > 0 Then _
.Sort .Columns(33), xlDescending, Header:=xlYes: GoTo 1
.Sort .Columns(30), xlDescending, Header:=xlYes
1 .Columns(34).Delete xlToLeft
End With
Application.EnableEvents = True 'réactive les évènements
End Sub