Private Sub Worksheet_Change(ByVal Target As Range)
Dim pl As Range, c As Range, tmp
' définition de la plage des critères, ligne 1 limitée aux colonnes des entête
Set pl = Intersect(Target, Range("Tableau1[#Headers]").Offset(-1))
If Not pl Is Nothing Then
For Each c In pl
' pour chaque critère modifié
If c = "" Then
' si vide on supprime le flitre
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=Target.Column
Else
' sinon
tmp = Split(Target, "<") ' découpe critère sur "<"
If UBound(tmp) = 1 Then
' si 2 critères alors filtre 'Entre'
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=2, Criteria1:=">=" & tmp(0), Operator:=xlAnd, Criteria2:="<=" & tmp(1)
Else
' si 1 critère alors filtre '='
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=Target.Column, Criteria1:=Target.Value
End If
End If
Next c
End If
End Sub