je cherche à créer une macro me permettant de masquer et afficher les feuilles uniquement à partir de la couleur des onglets (et surtout pas en utilisant leur nom -> trop variable)
l'idée étant d'activer les macro avec l'aide de bouton déjà créé dans la feuille intitulé PROTECTION.
les couleurs d'onglets présent dans le classeur :
violet : ActiveSheet.Tab.ColorIndex = 13
vert : ActiveSheet.Tab.ColorIndex = 10
Rouge : ActiveSheet.Tab.ColorIndex = 9
orange : ActiveSheet.Tab.ColorIndex = 45
bleu gris : ActiveSheet.Tab.ColorIndex = 47
noir (mais ne nécessite pas de macro) : ActiveSheet.Tab.ColorIndex = 1
ça on est d'accord si la macro était sur chaque feuille, mais ce que je veux c'est une macro par couleur sur la feuille PROTECTION (via un module), qui vérifiera la couleur de chaque onglet et masquera ou affichera ceux de la couleur choisis
Option Explicit
Dim O As Worksheet
Sub Violet_masquer()
For Each O In Worksheets
If O.Tab.ColorIndex = 13 Then O.Visible = xlSheetHidden
Next
End Sub
Sub Violet_afficher()
For Each O In Worksheets
If O.Tab.ColorIndex = 13 Then O.Visible = xlSheetVisible
Next
End Sub
Sub Vert_masquer()
For Each O In Worksheets
If O.Tab.ColorIndex = 10 Then O.Visible = xlSheetHidden
Next
End Sub
Sub Vert_afficher()
For Each O In Worksheets
If O.Tab.ColorIndex = 10 Then O.Visible = xlSheetVisible
Next
End Sub
Sub Orange_masquer()
For Each O In Worksheets
If O.Tab.ColorIndex = 45 Then O.Visible = xlSheetHidden
Next
End Sub
Sub Orange_afficher()
For Each O In Worksheets
If O.Tab.ColorIndex = 45 Then O.Visible = xlSheetVisible
Next
End Sub
Sub Bleu_gris_masquer()
For Each O In Worksheets
If O.Tab.ColorIndex = 47 Then O.Visible = xlSheetHidden
Next
End Sub
Sub Bleu_gris_afficher()
For Each O In Worksheets
If O.Tab.ColorIndex = 47 Then O.Visible = xlSheetVisible
Next
End Sub
merci beaucoup, c'est tout à fait ça ! je test dès demain sur le fichier concerné
Une macro All in one
(La première exécution masque les feuilles colorées, une seconde exécution les affiche)
PS: Il vaut mieux qu'il existe une feuille non colorée dans le classeur sinon...
VB:
Sub MaskAffich()
Dim O As Worksheet
For Each O In Worksheets
Select Case O.Tab.ColorIndex
Case 10, 29, 44, 47
O.Visible = Not O.Visible
End Select
Next
End Sub
'PS: sur Excel 2013
'10=Violet
'29=Vert
'44=Orange
'47=Bleu gris