Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rw As Range, LastRow As Long, Col As Range
Select Case True
Case Target.Count > 1: 'rien
Case Target.Column <> 5: 'rien
Case Target.Row < 2 Or Target.Row > 3: 'rien
Case Else
' masquage colonnes
For Each Col In Columns("Ai:Ak").Columns
Col.Hidden = Month(Cells(8, Col.Column).Value) <> Month(Range("G8").Value)
Next
' masquage lignes
Rows("10:" & Rows.Count).Hidden = False
LastRow = Cells(Rows.Count, "E").End(xlUp).Row
If LastRow >= 10 Then
For Each Rw In Rows("10:" & LastRow).Rows
Rw.Hidden = Cells(Rw.Row, "AN") = ""
Next
End If
End Select
End Sub