Sub CacherMasquerColonnes()
Dim c As Range
Dim dateInf As Date 'Date inférieure
Dim dateSup As Date 'Date supérieure
'Si la macro lève une erreur (toujours possible) aller à la fin pour rétablir l'affichage écran
On Error GoTo FinMAsquage
'Désactiver l'afichage écran (évite le flashage)
Application.ScreenUpdating = False
'Travailler sur la Feuil1 (éventuelement à changer ultérieurement)
With Sheets("Feuil1")
'Si une date est entrée en B2 et B3
If IsDate(Range("B2")) And IsDate(Range("B3")) Then
'Conserver ses dates dans les variables (plus rapide)
dateInf = .Range("B2"): dateSup = .Range("B3")
'Boucler sur chaque cellule de la plage E2:EL2
For Each c In .Range("$E$2:$EL$2")
'faut-il cacher la colonne?
c.EntireColumn.Hidden = c > dateInf And c < dateSup
Next c 'prochaine cellule
Else
'Si aucune date n'est entrée en B2:B3 ou une seule -> afficher tout
.Range("$E$2:$EL$2").EntireColumn.Hidden = False
End If
End With
FinMAsquage:
'réactiver l'affichage écran
Application.ScreenUpdating = True
End Sub