VBA - macro afficher/masquer feuille selon couleur de l'onglet

Seb63

XLDnaute Nouveau
Bonjour à tous,

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

le fichier ci-joint est un fichier test, mon classeur pour lequel est destiné la macro est bien trop lourd Regarde la pièce jointe Classeur1.xls

Merci d'avance pour votre aide.
 

Pièces jointes

  • Classeur1.xls
    94.5 KB · Affichages: 171
  • Classeur1.xls
    94.5 KB · Affichages: 153

vgendron

XLDnaute Barbatruc
Re : VBA - macro afficher/masquer feuille selon couleur de l'onglet

Bonjour,

une suggestion:
dans la macro que tu veux "activer"
tu commences par tester la couleur de ton onglet

sub macro()
if activesheet.tab.colorindex=13 then 'si l'onglet est violet, tu executes la macro.. sinon. bah. rien..
Code
end if
end sub

et pour la partie affichage ou pas de l'onglet, je suppose que ca doit etre un truc du genre
sheets("NomOnglet").visible = true 'or false
 
Dernière édition:

Seb63

XLDnaute Nouveau
Re : VBA - macro afficher/masquer feuille selon couleur de l'onglet

Bonjour,

une suggestion:
dans la macro que tu veux "activer"
tu commences par tester la couleur de ton onglet

sub macro()
if activesheet.tab.colorindex=13 then 'si l'onglet est violet, tu executes la macro.. sinon. bah. rien..
Code
end if
end sub

et pour la partie affichage ou pas de l'onglet, je suppose que ca doit etre un truc du genre
sheets("NomOnglet").visible = true 'or false

ç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
 

DoubleZero

XLDnaute Barbatruc
Re : VBA - macro afficher/masquer feuille selon couleur de l'onglet

Bonjour, Seb63, vgendron, le Forum,

Un exemple en pièce jointe.

A bientôt :)
 

Pièces jointes

  • 00 - Seb63 - Onglets afficher masquer selon couleur.xls
    94.5 KB · Affichages: 288

Seb63

XLDnaute Nouveau
Re : VBA - macro afficher/masquer feuille selon couleur de l'onglet

Bonjour, Seb63, vgendron, le Forum,

Un exemple en pièce jointe.

A bientôt :)

HTML:
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é
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

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

NB: J'exhume ce fil à cause de ce récent fil
https://www.excel-downloads.com/threads/afficher-ou-masquer-les-feuilles-dune-même-couleur.20024652/
où celui-ci est cité ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 082
Messages
2 085 171
Membres
102 805
dernier inscrit
emes