Sub Worksheet_Change(ByVal Target As Range)
' si U11=2, je souhaite afficher les colonnes AO:AP (41:42) et AQ:AR( 43:44)
' si U11 est vide, je veux masquer toutes les colonnes (AO:EJ) (41:140)
Application.ScreenUpdating = False
Dim wsType As Worksheet
Dim colRange As Range
Dim num As Variant
' Vérifier si la modification concerne la cellule U11
If Not Intersect(Target, Me.Range("U11")) Is Nothing Then
Set wsType = ThisWorkbook.Sheets("Type") ' Feuille où vous souhaitez masquer/afficher les colonnes
' Afficher toutes les colonnes
wsType.Columns.Hidden = False
' Récupérer la valeur de la cellule U11
num = Me.Range("U11").Value
' Vérifier si la cellule est vide
If IsEmpty(num) Then
' Masquer toutes les colonnes
wsType.Range("AO:EJ").EntireColumn.Hidden = True
Else
' Afficher les colonnes en fonction de la valeur de U11
Select Case num
Case 2
' Afficher les colonnes AO:AP et AQ:AR, masquer les autres
Set colRange = Union(wsType.Range("AO:AP"), wsType.Range("AQ:AR"))
wsType.Columns.Hidden = True
colRange.EntireColumn.Hidden = False
' Ajoutez d'autres cas au besoin pour d'autres valeurs de U11
' Case 3
' ' Afficher d'autres colonnes...
' Case Else
' ' Gérer d'autres cas si nécessaire...
End Select
End If
End If
Application.ScreenUpdating = True
End Sub