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