Masquer la barre menu et d'outils à l'ouverture d'un fichier sans altérer les autres potentiellement ouverts ?
1 réponse
JeanYvesGascon
Bonjour,
Dans le cadre d'un travail collaboratif en r=E9seau, je souhaiterai
pouvoir masquer la barre des menus Excel (Fichier, Affichage ...)
ainsi que les =E9ventuelles barres d'outils =E0 l'ouverture du fichier
TestMasque.xls (=E0 titre d'exemple) sans port=E9e sur les autres fichiers
xls ouverts.
le dit fichier TestMasque.xls se ferme par un commandBouton.
J'ai essay=E9 avec =E7a :
Private Sub Workbook_Open()
Dim CmdB As CommandBar
For Each CmdB In Application.CommandBars
CmdB.Enabled =3D False
Next CmdB
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim CmdB As CommandBar
For Each CmdB In Application.CommandBars
CmdB.Enabled =3D True
Next CmdB
End Sub
Merci de vos =E9clairages et vos avis =E9clair=E9s
Le principe, tu enregistres dans une feuille dédiée à cette tâche la liste des barres de menu affichées à l'ouverture (activation dans le thisWorkbook) et tu restitues les barres de menu comme à l'ouverture dès que tu ouvres ou sélectionnes un autre classeur.
Code dans le ThisWorkbook :
Private Sub Workbook_Activate() Creer_Barre_Menu Lister_Barre_Menu_Afficher End Sub
Private Sub Workbook_Deactivate() Call supprimer_Ma_Barre Afficher_Les_Barres_Menu End Sub
Code dans le module standard nommé Module1 '------------------------------------ Sub Creer_Barre_Menu() Dim Mbar As CommandBar On Error Resume Next Call supprimer_Ma_Barre
Set Mbar = Application.CommandBars.Add("MichDenis") With Mbar .Visible = True .Position = msoBarTop End With With Mbar.Controls With .Add .Caption = "Ok1" .Style = msoButtonIconAndCaption .OnAction = "Module1.MaMacro" .FaceId = 19 End With With .Add .Caption = "Ok2" .Style = msoButtonIconAndCaption .OnAction = "Module1.MaMacro1" .FaceId = 27 End With End With End Sub '------------------------------------ Sub supprimer_Ma_Barre() Application.CommandBars("MichDenis").Delete End Sub '------------------------------------ Sub MaMacro() MsgBox "Bonjour" End Sub '------------------------------------ Sub MaMacro1() MsgBox "Bonsoir" End Sub '------------------------------------ Sub Lister_Barre_Menu_Afficher() Dim Mbar As CommandBar, A As Integer With Feuil4 .Cells.Clear For Each Mbar In Application.CommandBars If Mbar.Name = "Worksheet Menu Bar" Then If Mbar.Enabled = True Then A = A + 1 .Range("A" & A) = Mbar.Name Mbar.Enabled = False End If Else If Mbar.Visible = True Then A = A + 1 .Range("A" & A) = Mbar.Name Mbar.Visible = False End If End If Next End With End Sub '------------------------------------ Sub Afficher_Les_Barres_Menu() Dim C As Range Dim Mbar As CommandBar, A As Integer With Feuil4 For Each C In .Range("A1:A" & .Range("A65536").End(xlUp).Row) If C.Value <> "" Then If C.Value = "Worksheet Menu Bar" Then Application.CommandBars(C.Value).Enabled = True Else Application.CommandBars(C.Value).Enabled = True Application.CommandBars(C.Value).Visible = True End If End If Next End With End Sub '------------------------------------ Sub Masquer_Feuille_Affichant_Éléments_Du_Menu() 'La feuille devient inaccessible par l'interface de 'la feuille de calcul Feuil4.Visible = xlSheetVeryHidden End Sub '------------------------------------ Sub Afficher_Feuille_Affichant_Éléments_Du_Menu() Feuil4.Visible = True End Sub '------------------------------------
MichD ------------------------------------------ "JeanYvesGascon" a écrit dans le message de groupe de discussion :
Bonjour,
Dans le cadre d'un travail collaboratif en réseau, je souhaiterai pouvoir masquer la barre des menus Excel (Fichier, Affichage ...) ainsi que les éventuelles barres d'outils à l'ouverture du fichier TestMasque.xls (à titre d'exemple) sans portée sur les autres fichiers xls ouverts.
le dit fichier TestMasque.xls se ferme par un commandBouton.
J'ai essayé avec ça :
Private Sub Workbook_Open() Dim CmdB As CommandBar For Each CmdB In Application.CommandBars CmdB.Enabled = False Next CmdB End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim CmdB As CommandBar For Each CmdB In Application.CommandBars CmdB.Enabled = True Next CmdB End Sub
Merci de vos éclairages et vos avis éclairés
Cordialement
JeanYves91360
L'approche décrite est valide pour Excel 1997 à 2003
Voici un fichier exemple : http://cjoint.com/?AIzrQeIb5bd
Le principe, tu enregistres dans une feuille dédiée à cette tâche la liste
des barres de menu affichées à l'ouverture (activation dans le thisWorkbook)
et tu restitues les barres de menu comme à l'ouverture dès que tu ouvres
ou sélectionnes un autre classeur.
Code dans le ThisWorkbook :
Private Sub Workbook_Activate()
Creer_Barre_Menu
Lister_Barre_Menu_Afficher
End Sub
Private Sub Workbook_Deactivate()
Call supprimer_Ma_Barre
Afficher_Les_Barres_Menu
End Sub
Code dans le module standard nommé Module1
'------------------------------------
Sub Creer_Barre_Menu()
Dim Mbar As CommandBar
On Error Resume Next
Call supprimer_Ma_Barre
Set Mbar = Application.CommandBars.Add("MichDenis")
With Mbar
.Visible = True
.Position = msoBarTop
End With
With Mbar.Controls
With .Add
.Caption = "Ok1"
.Style = msoButtonIconAndCaption
.OnAction = "Module1.MaMacro"
.FaceId = 19
End With
With .Add
.Caption = "Ok2"
.Style = msoButtonIconAndCaption
.OnAction = "Module1.MaMacro1"
.FaceId = 27
End With
End With
End Sub
'------------------------------------
Sub supprimer_Ma_Barre()
Application.CommandBars("MichDenis").Delete
End Sub
'------------------------------------
Sub MaMacro()
MsgBox "Bonjour"
End Sub
'------------------------------------
Sub MaMacro1()
MsgBox "Bonsoir"
End Sub
'------------------------------------
Sub Lister_Barre_Menu_Afficher()
Dim Mbar As CommandBar, A As Integer
With Feuil4
.Cells.Clear
For Each Mbar In Application.CommandBars
If Mbar.Name = "Worksheet Menu Bar" Then
If Mbar.Enabled = True Then
A = A + 1
.Range("A" & A) = Mbar.Name
Mbar.Enabled = False
End If
Else
If Mbar.Visible = True Then
A = A + 1
.Range("A" & A) = Mbar.Name
Mbar.Visible = False
End If
End If
Next
End With
End Sub
'------------------------------------
Sub Afficher_Les_Barres_Menu()
Dim C As Range
Dim Mbar As CommandBar, A As Integer
With Feuil4
For Each C In .Range("A1:A" & .Range("A65536").End(xlUp).Row)
If C.Value <> "" Then
If C.Value = "Worksheet Menu Bar" Then
Application.CommandBars(C.Value).Enabled = True
Else
Application.CommandBars(C.Value).Enabled = True
Application.CommandBars(C.Value).Visible = True
End If
End If
Next
End With
End Sub
'------------------------------------
Sub Masquer_Feuille_Affichant_Éléments_Du_Menu()
'La feuille devient inaccessible par l'interface de
'la feuille de calcul
Feuil4.Visible = xlSheetVeryHidden
End Sub
'------------------------------------
Sub Afficher_Feuille_Affichant_Éléments_Du_Menu()
Feuil4.Visible = True
End Sub
'------------------------------------
MichD
------------------------------------------
"JeanYvesGascon" a écrit dans le message de groupe de discussion :
117cb096-afd6-4daf-9ce7-4ad5b29f2d9a@k10g2000vbn.googlegroups.com...
Bonjour,
Dans le cadre d'un travail collaboratif en réseau, je souhaiterai
pouvoir masquer la barre des menus Excel (Fichier, Affichage ...)
ainsi que les éventuelles barres d'outils à l'ouverture du fichier
TestMasque.xls (à titre d'exemple) sans portée sur les autres fichiers
xls ouverts.
le dit fichier TestMasque.xls se ferme par un commandBouton.
J'ai essayé avec ça :
Private Sub Workbook_Open()
Dim CmdB As CommandBar
For Each CmdB In Application.CommandBars
CmdB.Enabled = False
Next CmdB
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim CmdB As CommandBar
For Each CmdB In Application.CommandBars
CmdB.Enabled = True
Next CmdB
End Sub
Le principe, tu enregistres dans une feuille dédiée à cette tâche la liste des barres de menu affichées à l'ouverture (activation dans le thisWorkbook) et tu restitues les barres de menu comme à l'ouverture dès que tu ouvres ou sélectionnes un autre classeur.
Code dans le ThisWorkbook :
Private Sub Workbook_Activate() Creer_Barre_Menu Lister_Barre_Menu_Afficher End Sub
Private Sub Workbook_Deactivate() Call supprimer_Ma_Barre Afficher_Les_Barres_Menu End Sub
Code dans le module standard nommé Module1 '------------------------------------ Sub Creer_Barre_Menu() Dim Mbar As CommandBar On Error Resume Next Call supprimer_Ma_Barre
Set Mbar = Application.CommandBars.Add("MichDenis") With Mbar .Visible = True .Position = msoBarTop End With With Mbar.Controls With .Add .Caption = "Ok1" .Style = msoButtonIconAndCaption .OnAction = "Module1.MaMacro" .FaceId = 19 End With With .Add .Caption = "Ok2" .Style = msoButtonIconAndCaption .OnAction = "Module1.MaMacro1" .FaceId = 27 End With End With End Sub '------------------------------------ Sub supprimer_Ma_Barre() Application.CommandBars("MichDenis").Delete End Sub '------------------------------------ Sub MaMacro() MsgBox "Bonjour" End Sub '------------------------------------ Sub MaMacro1() MsgBox "Bonsoir" End Sub '------------------------------------ Sub Lister_Barre_Menu_Afficher() Dim Mbar As CommandBar, A As Integer With Feuil4 .Cells.Clear For Each Mbar In Application.CommandBars If Mbar.Name = "Worksheet Menu Bar" Then If Mbar.Enabled = True Then A = A + 1 .Range("A" & A) = Mbar.Name Mbar.Enabled = False End If Else If Mbar.Visible = True Then A = A + 1 .Range("A" & A) = Mbar.Name Mbar.Visible = False End If End If Next End With End Sub '------------------------------------ Sub Afficher_Les_Barres_Menu() Dim C As Range Dim Mbar As CommandBar, A As Integer With Feuil4 For Each C In .Range("A1:A" & .Range("A65536").End(xlUp).Row) If C.Value <> "" Then If C.Value = "Worksheet Menu Bar" Then Application.CommandBars(C.Value).Enabled = True Else Application.CommandBars(C.Value).Enabled = True Application.CommandBars(C.Value).Visible = True End If End If Next End With End Sub '------------------------------------ Sub Masquer_Feuille_Affichant_Éléments_Du_Menu() 'La feuille devient inaccessible par l'interface de 'la feuille de calcul Feuil4.Visible = xlSheetVeryHidden End Sub '------------------------------------ Sub Afficher_Feuille_Affichant_Éléments_Du_Menu() Feuil4.Visible = True End Sub '------------------------------------
MichD ------------------------------------------ "JeanYvesGascon" a écrit dans le message de groupe de discussion :
Bonjour,
Dans le cadre d'un travail collaboratif en réseau, je souhaiterai pouvoir masquer la barre des menus Excel (Fichier, Affichage ...) ainsi que les éventuelles barres d'outils à l'ouverture du fichier TestMasque.xls (à titre d'exemple) sans portée sur les autres fichiers xls ouverts.
le dit fichier TestMasque.xls se ferme par un commandBouton.
J'ai essayé avec ça :
Private Sub Workbook_Open() Dim CmdB As CommandBar For Each CmdB In Application.CommandBars CmdB.Enabled = False Next CmdB End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim CmdB As CommandBar For Each CmdB In Application.CommandBars CmdB.Enabled = True Next CmdB End Sub