Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range 'déclare la variable r (Recherche)
Dim te As Range 'déclare la variable te (Tableau Entier)
If Target.Address <> "$B$1" Then Exit Sub 'si le changement a lieu ailleurs qu'en B1, sort de la procédure
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set te = Range(Cells(1, 5), Cells(1, Application.Columns.Count)).EntireColumn 'définit le tableau entier te
te.Hidden = False 'affiche le tableau entier
Set r = Rows(2).Find(Target, , xlValues, xlWhole) 'définit la recherche r
'redéfinit la recherche r (les colonnes entières en tenant compte du nombre de colonnes du mois)
Set r = Rows(2).Find(Target, , xlValues, xlWhole).Resize(1, r.MergeArea.Cells.Count).EntireColumn
te.Hidden = True 'masque te
r.Hidden = False 'affiche r
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub