Sub AfficherMois()
' Est appelée par boutons des mois ou par Worksheet_Change
Application.ScreenUpdating = False
Dim Début, Fin, Mois, ChaineMoisDébut, ChaineMoisFin
If IsError(Application.Caller) Then ' Erreur si l'origine est Worksheet_Change et non un bouton
Mois = 1 ' Si pas bouton appuyé, par défaut 1
Else
Mois = Val(Mid(Application.Caller, 5)) ' Récupère le N° du bouton appuyé
End If
ChaineMoisDébut = Application.Index([ListeMois], Mois) ' Récupère la chaine du mois en feuil Fériés
Début = Application.Match(ChaineMoisDébut, [H1:H310], 0) ' Cherche la ligne qui contient cette chaine
ChaineMoisFin = Application.Index([ListeMois], Mois + 1) ' Récupère la chaine du mois suivant en feuil Fériés
Fin = Application.Match(ChaineMoisFin, [H1:H310], 0) ' Cherche la ligne qui contient cette chaine
If IsError(Fin) Then Fin = 310 ' Si dernier bouton alors erreur sur mois suivant, assume dernière ligne 310
Rows("1:310").EntireRow.Hidden = False ' Démasque toutes les lignes
If Début > 2 Then Rows("2:" & Début - 1).EntireRow.Hidden = True ' Masquer de la ligne 2 au début ( hormis premier mois )
Rows(Fin & ":310").EntireRow.Hidden = True ' Masquer du dernier jour du mois à la fin
End Sub