re,
si vous changez une de 6 filtres, cela provoque un "évent" et la macro "Worksheet_Change" dans le module de la feuille "xxx" est lancée.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dLigne, c1 As Range
If Intersect(Target, Me.Range("O10:T10")) Is Nothing Then Exit Sub 'vous n'avez pas modifié un de ces 6 filtres = stop
With Me
.Range("E22:E1000").Name = "Col_E" 'vos données se trouvent devant la ligne 1000 (et à partir de 22)
dLigne = [max(if(col_e<>"",row(col_e),22))] 'dernière ligne de la colonne E non-vide
Set c = Range("A21:DQ" & dLigne) 'la plage à filtrer, a partir de colonne A jusqu'à la colonne auxiliaire colonne DQ = colonne 121
On Error Resume Next
Set c1 = .AutoFilter.Range 'quelle est la plage actuelle de l'autofilter
'Debug.Print c.Address, c1.Address 'montrer les plages dans l'écran direct
If c.Address <> c1.Address Then .AutoFilter.Range.AutoFilter 'si début différent ou plus de lignes = reset tout l'autofilter
On Error GoTo 0
If WorksheetFunction.CountA(.Range("O10:T10")) = 0 Then c.AutoFilter: Exit Sub 'il n'y a pas de filtres = montrer tout
c.AutoFilter 121, 1 'filtrer la colonne DQ pour la valeur 1 et montrer les autres flèches
End With
End Sub