Bonjour,
à tester (avec juste une ou deux modifs):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim p%, k%, prdts As Range
If Target.Address = "$A$1" Then
Application.ScreenUpdating = False
Me.Columns.Hidden = False
k = Me.Cells(1, Columns.Count).End(xlToLeft).Column
Set prdts = Me.Cells(2, 4).Resize(, k - 3)
p = WorksheetFunction.Match(Target, [2:2], 0)
prdts.Columns.Hidden = True
Columns(p).Hidden = False
End If
End Sub