Si personne ne trouve autre chose à apporter à cette discussion, je vous prie de la considérer comme close.
Private Sub Worksheet_Activate() ActiveSheet.Visible = False ' ou true lorsqu'on veut la montrer, selon l'utilisateur. End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionDans ton commentaire tu as "selon l'utilisateur", mais ce n'est pas ça du tout (c'est quelque soit l'utilisateur)
En reparlant de ce sujet, je pense que je vais changer de stratégie.
Sub Masquer_feuilles() Dim F As Integer Application.ScreenUpdating = False For F = 1 To Worksheets.Count If Sheets(F).Name <> "Menu" Then Sheets("Menu").Activate Sheets(F).Visible = False End If Next F Application.ScreenUpdating = True End Sub
Le reste (le code) n'est que récitation et ne doit venir qu'ensuite.
With ActiveWindow .DisplayWorkbookTabs = False End With
Option Explicit Dim Tm, ctl Private Sub Workbook_BeforeClose(Cancel As Boolean) 'rétabli les onglets ActiveWindow.DisplayWorkbookTabs = True 'rétabli la réactivation des onglets Set Tm = Application.CommandBars(1).FindControl(ID:="30007") For Each ctl In Tm.Controls If ctl.ID = "522" Then ctl.Enabled = Not ctl.Enabled End If Next End Sub Private Sub Workbook_Open() 'affiche la Feuil Menu Sheets("Menu").Select 'cache les onglets ActiveWindow.DisplayWorkbookTabs = False 'neutralise la réactivation des onglets Set Tm = Application.CommandBars(1).FindControl(ID:="30007") For Each ctl In Tm.Controls If ctl.ID = "522" Then ctl.Enabled = Not ctl.Enabled End If Next End Sub
For each feuille in Worksheets if feuille.name <> "Menu" then feuille.visible = xlSheetVeryHidden .....
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) Dim feuille As Variant Application.ScreenUpdating = False For Each feuille In Worksheets If feuille.Name <> "Menu" Then Sheets("Menu").Activate ActiveWindow.DisplayWorkbookTabs = False End If Next End Sub