Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Résolu - Griser un onglet

  • Initiateur de la discussion Initiateur de la discussion Eric C
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Eric C

XLDnaute Barbatruc
Bonsoir le forum
Bonsoir à toutes & à tous

Je reviens vers vous pour demander s'il est possible de griser un ou des onglets d'un classeur afin d'empêcher la sélection d'une ou des feuilles. Je ne désire pas masquer ou cacher la ou les feuilles ni le ou les onglets mais bien griser le ou les onglets pour les rendre inactifs.
Je ne mets pas de fichier qui ne me semble pas utile pour le présent.

Merci de votre attention & bonne soirée.
Eric c
 
Dernière édition:
Re : Griser un onglet

Bonsoir ,

Oui , surement ,

Utilisez les évenementiels :

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)

End Sub

pour mémoriser et rediriger vers la feuille appellante

en utilisant éventuellement pour la mise en forme :

Sub MiseEnForme()
'

Sheets("Feuil3").Select
Cells.Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0.499984740745262
.PatternTintAndShade = 0
End With
Sheets("Feuil3").Select
With ActiveWorkbook.Sheets("Feuil3").Tab
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0.499984740745262
End With
Sheets("Feuil1").Select
End Sub

voilà , y'a plus qu'a mettre en oeuvre , tous les ingrédients y sont
 
Re : Griser un onglet

Bonjour, Eric C, camarchepas 😀,

Si les onglets "inaccessibles" sont de couleur rouge... et que l'un des onglets est nommé "toto" :

Code:
Option Explicit
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
For Each Sh In Worksheets
If Sh.Tab.ColorIndex = 3 Then Sheets("toto").Select
Next Sh
End Sub

A bientôt 🙂
 
Re : Griser un onglet

Bonsoir Double Zero, Eric ,

@ 00 : déjà une trés, trés bonne amorce de solution, (y'a encore de la neurone là haut , lol)

Je pensais mémoriser l'onglet appellant avec desactivate dans une variable publique , puis de renvoyer vers cet onglet avec activate si l'onglet visé était interdit.
 
Re : Griser un onglet

salut .............. et 😀😀

avec ce que j'ai compris, peut-être ainsi ?

Dans un module standard
Pour se griser
Code:
Sub GrisGris()
  Dim n As Byte
  For n = 0 To 2
    'noms des feuilles à brider
    Sheets(Array("Feuil4", "Feuil6", "Feuil8")(n)).Tab.ColorIndex = 48
  Next
End Sub
Pour se dégriser et se libérer ...
Code:
Sub Dégrisage()
  Dim n As Byte
  For n = 1 To Sheets.Count
    Sheets(n).Tab.ColorIndex = xlNone
    Sheets(n).ScrollArea = ""
  Next
End Sub

Pour brider, dans ThisWorkbook
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  If Sh.Tab.ColorIndex = 48 Then sh.ScrollArea = "$A$1" 'ou autre
End Sub
 
Re : Griser un onglet

Re le forum,
Bonsoir camarchepas (tjrs fidèle & grand Merki à toi) et bonsoir DoubleZero

Bon, en réalité je me suis mal expliqué et il est vrai que l'on peut & que l'on doit parvenir à ses fins avec Workbook_SheetActivate. Petite aparté à notre ami camarchepas : les propriétés Themecolor & tintandshade ne sont pas reconnues sous 2003 🙁.
Je joints donc un ti fichier très basic. Le but : Ouvrir un fichier ET en fonction du jour de la semaine, activer uniquement l'onglet du jour "J" (un peu lourd comme phrase mais bon ...) . Griser (et donc rendre inactifs) les onglets des autres jours TOUT en laissant activés "Tata visible et toto visible". Ai je été assez précis ??
P.S : Le samedi & le dimanche sont des jours de repos pour les utilisateurs.
Bonne nuit et à bientôt de vous lire.
Eric c
 

Pièces jointes

Dernière édition:
Re : Griser un onglet

Re le forum
Re camarchepas & DoubleZero
Bonsoir Si...
Merci de ta contribution. J'essaierai demain demain après-midi ton fichier car maintenant dodo car debout de très bonne heure.
Encore Grand Merki à vous de vous pencher sur mon "cas".
Bonne nuit
Eric c
 
Re : Griser un onglet

Bonjour DoubleZéro, Si....., Eric ,

Alors , réveil matinal donc petite solution sans bruit au croissants beurre
et oui Eric , pas toujours simple de reprendre la 2CV , lorsque l'on est habitué à la DS5

(Oups , mais non c'est pas de la pub)

Tous cela est dans le module classeur (Thisworkbook)

A oui pour les tests plutot que de dérégler la date système , je passe par une variable temporaire :

'Pour simulation , utilisation d'une variable temporaire
Dates = "11/11/2014" 'Date
' En marche normale on alimente
Dates = Date


Code:
Dim Onglet_départ As String
Private Sub Workbook_open()

Dim Onglet As Worksheet
Dim Dates As String, Jour_semaine As String, Onglet_ok As String
Const Semaine As String = "Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimanche"
Const Repos As String = "Samedi,Dimanche"

'Pour simulation , utilisation d'une variable temporaire
 Dates = "11/11/2014" 'Date ' En marche normale on alimente Dates par Date
'Calcul et découpe le jour de la semaine
 Jour_semaine = Split(Semaine, ",")(Weekday(Dates, vbMonday) - 1)
'Liste des onglets accessibles
 Onglet_ok = "toto visible,tata visible," & Jour_semaine
'Si Samedi ou Dimanche sortie du traitement
 If InStr(1, Repos, Jour_semaine, 1) > 0 Then Exit Sub

'Scrute les feuilles du classeur pour mise au format des onglets
 For Each Onglet In ThisWorkbook.Worksheets
  'Si onglet appartient à liste accessibles alors dégrise sinon grise
   Onglet.Tab.ColorIndex = IIf(InStr(1, Onglet_ok, Onglet.Name, 1) > 0, xlNone, 48)
 Next
End Sub


Private Sub Workbook_SheetActivate(ByVal Sh As Object)
 'Sur selection feuille si couleur grisée alors retour à la feuille appelante
 If Sh.Tab.ColorIndex = 48 Then Sheets(Onglet_départ).Activate
End Sub


Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
'Sur déselection feuille, mémorise le nom de l'onglet de départ
Onglet_départ = Sh.Name
End Sub

Et donc la version intégrée , mais testée en Xl2010 PC qu'en même , lol
 

Pièces jointes

Re : Griser un onglet

Bonjour le forum
Bonjour camarchepas (si..si, ca marche), bonjour DoubleZero & bonjour Si... ° (A l'identique... hein !!)

Bonjour & grand Merki de vous être intéressé à mon cas qui devrait en intéressé plus d'un. Le dernier fichier mis en ligne correspond on ne peut mieux à mon attente. Toutefois, je vais garder les autres sous le coude car rien ne se jette (Je suis du genre conservateur, on ne sait jamais.
Je vous souhaite un bon ouikand et encore merki. 🙂
Eric c
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
621
Réponses
35
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…