Bloquer puis restaurer les barres d'outils et menus d'excel
Ce module peut être utilisé pour sauvegarder l'environnement de l'utilisateur (barres d'outils, fichiers ouverts, état d'un certain nombre d'options) à l'ouverture d'un classeur qui a besoin d'un environnement spécifique et le restaurer à la fermeture.
L'utilisation de ce module ne nécessite que deux appels dans le classeur qui doit créer son propre environnement :
- dans l'événement Workbook_Open --> appeler la procédure Ouverture
- dans l'événement Workbook_BeforeClose --> la procédure Fermeture
La procédure "Ouverture" :
- stocke dans des tableaux les barres d'outils visibles, les fichiers ouverts et l'état actuel de ces options : affichage de la barre de formules, du mode plein écran, des barres de défilement, de la barre d'état, du quadrillage, des entêtes de colonnes et de lignes, des onglets du classeur (InitTablos)
- cache toutes les barres d'outils et la barre de menu d'Excel, ferme les fichiers ouverts en les enregistrant, met sur Faux toutes les options. Ce sont les procédures : MenuEtBO, Classeurs_Ouverts et Desactive_Options qui se chargent de ce travail. Elles sont à adapter aux besoins de l'environnement spécifique à créer.
La procédure "Fermeture" :
- rétablit les barres d'outils et la barre de menu d'Excel, rouvre les fichiers, restaure l'état des options à l'ouverture
Conseil qui peut être utile pour la mise au point d'un classeur pourvu d'un environnement spécifique : avoir en permanence une sauvegarde à jour du fichier des barres d'outils de l'environnement "normal" (C:\WINDOWS\Application Data\Microsoft\Excel\Excel.xlb pour Excel 2000)
Public tabBO(), tabFiles(), tabOptions() 'A appeler dans Workbook_Open (module ThisWorkbook sub Ouverture() Application.ScreenUpdating = False InitTablos MenuEtBO False Classeurs_Ouverts False Desactive_Options end sub
' A appeler dans Workbook_BeforeClose (module ThisWorkbook) ' Il est déconseillé d'oublier cet appel :-))
sub Fermeture() Application.ScreenUpdating = False MenuEtBO True Classeurs_Ouverts True Retablit_Options ThisWorkbook.Saved = True end sub
'Initialise les tableaux globaux
sub InitTablos() BO_Visibles Etat_Options Files_Opened end sub
' Tableau des barres d'outils visibles de l'utilisateur
sub BO_Visibles()
Dim i%, BO As CommandBar
i = 0
For Each BO In Application.CommandBars
If BO.Visible Then
ReDim Preserve tabBO(i)
tabBO(i) = BO.Name
i = i + 1
End If
Next BO
end sub' Montre ou cache les barres d'outils de l'environnement utilisateur
sub MenuEtBO(OnOff As Boolean) Dim i% Application.CommandBars(tabBO(0)).Enabled = OnOff For i = 1 To UBound(tabBO) Application.CommandBars(tabBO(i)).Visible = OnOff Next end sub
' Tableau des options dans l'environnement utilisateur
sub Etat_Options() ReDim tabOptions(6) With Application tabOptions(0) = .DisplayFormulaBar tabOptions(1) = .DisplayFullScreen tabOptions(2) = .DisplayScrollBars tabOptions(3) = .DisplayStatusBar End With With ActiveWindow tabOptions(4) = .DisplayGridlines tabOptions(5) = .DisplayHeadings tabOptions(6) = .DisplayWorkbookTabs End With end sub
' Désactive toutes les options (à adapter selon besoins ' de l'environnement spécifique à créer)
sub Desactive_Options() With Application .DisplayFormulaBar = False .DisplayFullScreen = False .DisplayScrollBars = False .DisplayStatusBar = False End With With ActiveWindow .DisplayGridlines = False .DisplayHeadings = False .DisplayWorkbookTabs = False End With end sub
' Rétablit les options de l'environnement utilisateur
sub Retablit_Options() With Application .DisplayFormulaBar = tabOptions(0) .DisplayFullScreen = tabOptions(1) .DisplayScrollBars = tabOptions(2) .DisplayStatusBar = tabOptions(3) End With With ActiveWindow .DisplayGridlines = tabOptions(4) .DisplayHeadings = tabOptions(5) .DisplayWorkbookTabs = tabOptions(6) End With end sub
' Tableau des classeurs ouverts
sub Files_Opened()
Dim i%, Fich As Workbook
i = 0
For Each Fich In Workbooks
ReDim Preserve
tabFiles(1, i)
If Not UCase(Fich.Name) = "PERSO.XLS" And _
Not Fich.Name = ThisWorkbook.Name And _
Not Fich.Path = ""
Then
tabFiles(0, i) = Fich.FullName
tabFiles(1, i) = Fich.Name
i = i + 1
End If
Next Fich
end sub' Rouvre ou ferme les classeurs de l'environnement utilisateur
sub Classeurs_Ouverts(OnOff As Boolean)
Dim i%
On Error Resume Next
For i = 0 To UBound(tabFiles, 2)
Select Case OnOff
Case True
Workbooks.Open tabFiles(0, i)
Case False
Workbooks(tabFiles(1, i)).Close True
End Select
Next
end sub
Fichier recommandé +++ à ceux qui font des jeux qui bidouillent les paramètres d'excel !...
Astuce illustrée par ce classeur
fs-excelstate
Auteur : Frédéric Sigonneau
Mots clefs associés à cette page : barre, outil, bouton, afficher, barre des menus, masquer, personnaliser, vba
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

Plantage VBA sur ces macros
J'obtiens un plantage sur la procédure MenuetBO().
Pas de souci lorsqu'elle est appelée par Ouverture() : les menus et les barres d'outils sont bien fermés/masqués...
Par contre, lorsqu'elle est appelée par Fermeture(), j'ai un problème d'index, ou d'argument, dans l'instruction Application.CommandBars(tabBO(i)).Visible = OnOff.
Arf... bonjour après pour rétablir et retrouver mes menus et mes barres d'outils...
Une idée du problème ?
Merci d'avance
Némésis21
Un peu d'aide
Bonjour,
J'essaie de créer un jeux sous vba ou j'ai besoin de cacher les barres d'outil en toute securité. Cependant, je n'y parvient pas. J'obtiens des message d'erreur comme le tien. Existe t'il un exemple de classeur ou peut observer ces macros. Même en essayer d'inclure le code que l'on trouve sur le site, je tourne malheureusement en rond...
Merci pour votre aide
Alexandre
forum
Bonjour
La question est trop vaste pour recevoir une réponse adaptée ici. Excelabo n'est PAS un forum de discussion. Je te conseille d'aller poser ta question, avec un classeur exemple sur excel downloads par exemple ou sur le forum microsoft answers excel.
Attention à ce que tu veux faire : les menus sont gérés de façon complètement différente entre les versions d'excel <=2003 et 2007 et +. Faire un classeur avec des menus cachés qui tourne sous les deux environnements est un travail qui risque d'être fort compliqué...
Misange
fichier exemple
As tu essayé le classeur exemple ?
Misange