Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
' Si target représente plus d'une cellule -> sortir
If Target.CountLarge > 1 Then Exit Sub
With ListObjects("Datas")
' Si aucune ligne de données n'est présente dans le tableau
If .DataBodyRange Is Nothing Then Exit Sub
' Si target n'est pas en colonne 3 des données du tableau -> sortir
If Intersect(Target, ListObjects("Datas").DataBodyRange.Columns(3)) Is Nothing Then Exit Sub
' si target n'est pas vide -> lancer le tri
If Not IsEmpty(Target) Then
' Première cellule des données
Set rng = .DataBodyRange.Cells(1, 1)
With .Sort
With .SortFields
.Clear
.Add Key:=rng, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
End With
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
End With
End Sub