Bonjour,
Une piste en conservant tes bouton Formulaire et en rajoutant un bouton "Afficher tout" :
Sub Filtre()
Dim S As Shape
Dim PlgLig As Range
Dim PlgCol As Range
Dim I As Integer
With ActiveSheet
Set PlgLig = .Range(.Cells(8, 1), .Cells(19, 1))
Set PlgCol = .Range(.Cells(4, 4), .Cells(4, 14))
Set S = .Shapes(Application.Caller)
End With
Application.ScreenUpdating = False
PlgLig.AutoFilter
PlgCol.EntireColumn.Hidden = False
If S.TextFrame.Characters.Text = "Afficher tout" Then Exit Sub
PlgLig.AutoFilter 1, S.TextFrame.Characters.Text
For I = 1 To PlgCol.Count
If PlgCol(I).Value <> S.TextFrame.Characters.Text Then PlgCol(I).EntireColumn.Hidden = True
Next I
Application.ScreenUpdating = True
End Sub