Bonjour,
Je suis novice en programmation de VBA, en me balladant sur forum j'ai recupéré quelques programmation que j'ai adapter à mon fichier.
J'assai de masquer les colonnes de mon planning en fonction d'un intervalle de 2 dates, J'ai repris la codification d'une ancienne discussion en essayant de l'adapter, mais sa ne fonctions pas je sais pas pourquoi?
Quelqu'un peut me venir en aide SVP?
Voici le code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$3" Or Target.Address = "$B$4" Then CacherMasquerColonnes
End Sub
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("B3")) And IsDate(Range("B4")) Then
'Conserver ses dates dans les variables (plus rapide)
dateInf = .Range("B3"): dateSup = .Range("B4")
'Boucler sur chaque cellule de la plage E2:EL2
For Each c In .Range("$I$2:$NI$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 B3:B4 ou une seule -> afficher tout
.Range("$I$2:$NI$2").EntireColumn.Hidden = False
End If
End With
FinMAsquage:
'r?activer l'affichage ?cran
Application.ScreenUpdating = Tru
End Sub