Dans un premier temps, je vous remercie de lire ma demande.
J'ai un classeur qui contient 6 onglets. Les 5 derniers contiennent chacun un projet qui leur est propre, et tous faits selon le même format.
Le premier onglet sert de tableau de bord.
Je souhaite actualiser le mois (via liste déroulante) en cellule C2 de ce premier onglet (que je nommerais "Global") et qu'en fonction de la valeur de cette cellule, les colonnes ne contenant pas le mois dans la plage F7:AT7 (il y a plusieurs années) dans les onglets 2 à 6 soient masqués.
Bien sûr, l'idée est qu'en changeant la valeur en Global!C2, les autres onglets s'actualisent automatiquement.
J'ai déjà une macro par onglet qui permet de gérer à peu près :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
With Sheets("Projet 1").Cells
.EntireColumn.Hidden = False
End With
For Col = 6 To 46
If Cells(6, Col) = "0" Then Columns(Col).Hidden = True
Next
End Sub
mais c'est un bidouillage où la différence entre les mois dans la plage F7:AT7 et la cellule en E4 permet d'attribuer un score de 0 en ligne 6 et la macro masque les colonnes où il y a 0... (je sais, c'est moche)
Est-ce que vous connaîtriez un moyen de simplifier l'utilisation de ce classeur, s'il vous plaît ?
Placez cette macro dans le code de la 1ère feuille (Global) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$2" Or Target(1) = "" Then Exit Sub
Dim n%, i As Variant
For n = 2 To 6 '5 feuilles
With Sheets(n).Columns("F:AT")
.Hidden = True 'masque les colonnes
i = Application.Match(Target, .Rows(7), 0) 'F7:AT7
If IsNumeric(i) Then .Columns(i).Hidden = False 'affiche la colonne
End With
Next
End Sub
Si en Global!C2 on a Février il faut que ce texte se retrouve dans les plages F7:AT7 des 5 feuilles suivantes.
Placez cette macro dans le code de la 1ère feuille (Global) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$2" Or Target(1) = "" Then Exit Sub
Dim n%, i As Variant
For n = 2 To 6 '5 feuilles
With Sheets(n).Columns("F:AT")
.Hidden = True 'masque les colonnes
i = Application.Match(Target, .Rows(7), 0) 'F7:AT7
If IsNumeric(i) Then .Columns(i).Hidden = False 'affiche la colonne
End With
Next
End Sub
Si en Global!C2 on a Février il faut que ce texte se retrouve dans les plages F7:AT7 des 5 feuilles suivantes.