Private Sub Worksheet_Change(ByVal Target As Range)
Dim ref As Range, tablo As Range, j As Variant, i&
Set ref = [B2] 'à adapter
If Intersect(Target, ref) Is Nothing Then Exit Sub
Set tablo = Feuil3.[M2:O5] 'CodeName+plage, à adapter
j = Application.Match(ref, tablo.Rows(1), 0)
On Error Resume Next 'si la feuille n'existe pas
For i = 2 To tablo.Rows.Count
If IsError(j) Then
Sheets(CStr(tablo(i, 1))).Visible = True
Else
Sheets(CStr(tablo(i, 1))).Visible = tablo(i, j) = ""
End If
Next
End Sub