Re
Remplacez la macro Masque que je vous ai donnée dans l'autre fil par celle 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
Call Colorisertableau
If .Range("B34") = "" Then Exit Sub
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
Dim cel As Range
For Each cel In .Range("C3:AU20")
With cel
If .EntireColumn.Hidden = False And .Value <> "" And .Value <> Range("B34") Then
.Interior.Color = xlNone
.Font.Color = RGB(255, 255, 255) 'xlNone
End If
End With
Next cel
End With
End Sub
Si vous choisissez une valeur en B34, le code masque les colonnes et, par modification de couleurs, cache les valeurs existantes ne correspondant pas à la cellule B34.
Si vous effacez la valeur en B34, le code vous affiche toutes les colonnes et valeurs enregistrées dans votre planning.
Attention vous devez absolument avoir votre code "ColoriserTableau" qui se trouve dans votre fichier. Sans trop analyser, je l'ai revu un peu. Remplacez l'existant poar celui ci-dessous
Sub Colorisertableau()
Dim F1 As Worksheet
Dim Plage As Range, cell As Range
Application.ScreenUpdating = False
Set F1 = Worksheets("General")
With F1
Set Plage = .Range("B3:AU20")
For Z = 22 To 31
For Each cell In Plage
With cell
If .Value = Cells(Z, 1).Value Then .Interior.Color = F1.Cells(Z, 1).Interior.Color
If .Value = Cells(Z, 1).Value Then .Font.Color = F1.Cells(Z, 1).Font.Color
End With
Next cell
Next Z
End With
Application.ScreenUpdating = True
End Sub
Cordialement