Ok. La liste déroulante étant considérée dans B34, faites ceci
- Click droite sur le nom de l'onglet General
- Choisissez l'option "Visualiser le code"
- Coller le code ci-dessous dans la fenêtre
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B34")) Is Nothing Then
Call masque
End If
End Sub
Ensuite allez dans un module et coller le code ci- dessous
Sub masque()
Dim col As Byte
Dim i As Long
Dim F1 As Worksheet
Set F1 = Worksheets("General")
With F1
.Cells.EntireColumn.Hidden = False 'pour reafficher toutes les colonnes
On Error Resume Next
For i = .Cells(2, Columns.Count).End(xlToLeft).Column To 3 Step -1
col = .Range(.Cells(3, i), .Cells(20, i)).Find(.Range("B34").Value, LookIn:=xlValues, LookAt:=xlWhole).Column
If col > 0 Then
.Cells(3, i).EntireColumn.Hidden = False
Else: .Cells(3, i).EntireColumn.Hidden = True
End If
col = 0
Next i
End With
End Sub
Dès que vous changerez la valeur de la liste les colonnes ne comportant pas la valeur choisie seront masquées.
Cordialement