Gestion de menu personnalisé pour 2 classeurs identiques ouverts

Le
COQUITO
Bonjour à tous,

Le sujet pour lequel j'ai besoin d'aide concerne la gestion des menus
personnalisés dans le cas où deux classeurs identiques sont ouverts
simultanément.

J'ai créé un menu personnalisé que j'appelle à partir du Workbook_Open :

Private sub Workbook_Open ()
call Menu_CopieValeurs
End Sub

Dans un module standar, j'ai mis la procédure de création du menu et j'ai
fait en sorte que lorsque les deux classeurs identiques sont ouverts, un
seul menu s'affiche :

Public Sub Menu_CopieValeursCubes()
Dim bMarqueur As Boolean
Dim iNbMenus As Integer
Dim iItem As Integer
Dim menuPrin As CommandBarPopup
Dim menuItem As CommandBarControl

iNbMenus = Application.CommandBars.ActiveMenuBar.Controls.Count
For iItem = 1 To iNbMenus
If
Application.CommandBars.ActiveMenuBar.Controls.Item(iItem).Caption =
"Copie_Valeurs" Then
bMarqueur = True
End If
Next iItem

'CREATION DU MENU PRINCIPAL
If bMarqueur = False Then
Set menuPrin = _
Application.CommandBars("Worksheet Menu
Bar").Controls.Add(Type:= _
msoControlPopup, temporary:=True)
menuPrin.Caption = "Copie_Valeurs"
menuPrin.BeginGroup = True
End If

Cela marche bien.
En revanche, lorsqu'on ferme un seul des deux classeurs, le menu disparaît,
y compris sur le classeur qui reste ouvert.

Comment faire pour que le menu reste sur le classeur ouvert ?

Merci d'avance à tous ceux qui pourraient trouver une solution.
(A mon travail, la version d'Excel est Excel 2003)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #21670591
Bonjour,

Fais une gestion de ta barre de menu personnalisé dans
chacun des 2 classeurs en utilisant ceci dans chacun des
ThisWorkbook de tes 2 classeurs et enlève la procédure
"Private sub Workbook_Open"

'-------------------------------
Private Sub Workbook_Activate()
call Menu_CopieValeurs
End Sub
'-------------------------------
Private Sub Workbook_Deactivate()
On error resume next
Application.CommandBars.ActiveMenuBar.Controls("Copie_Valeurs").delete
End Sub
'-------------------------------



"COQUITO"
Bonjour à tous,

Le sujet pour lequel j'ai besoin d'aide concerne la gestion des menus
personnalisés dans le cas où deux classeurs identiques sont ouverts
simultanément.

J'ai créé un menu personnalisé que j'appelle à partir du Workbook_Open :

Private sub Workbook_Open ()
call Menu_CopieValeurs
End Sub

Dans un module standar, j'ai mis la procédure de création du menu et j'ai
fait en sorte que lorsque les deux classeurs identiques sont ouverts, un
seul menu s'affiche :

Public Sub Menu_CopieValeursCubes()
Dim bMarqueur As Boolean
Dim iNbMenus As Integer
Dim iItem As Integer
Dim menuPrin As CommandBarPopup
Dim menuItem As CommandBarControl

iNbMenus = Application.CommandBars.ActiveMenuBar.Controls.Count
For iItem = 1 To iNbMenus
If
Application.CommandBars.ActiveMenuBar.Controls.Item(iItem).Caption "Copie_Valeurs" Then
bMarqueur = True
End If
Next iItem

'CREATION DU MENU PRINCIPAL
If bMarqueur = False Then
Set menuPrin = _
Application.CommandBars("Worksheet Menu
Bar").Controls.Add(Type:= _
msoControlPopup, temporary:=True)
menuPrin.Caption = "Copie_Valeurs"
menuPrin.BeginGroup = True
End If

Cela marche bien.
En revanche, lorsqu'on ferme un seul des deux classeurs, le menu disparaît,
y compris sur le classeur qui reste ouvert.

Comment faire pour que le menu reste sur le classeur ouvert ?

Merci d'avance à tous ceux qui pourraient trouver une solution.
(A mon travail, la version d'Excel est Excel 2003)
michdenis
Le #21670581
Pour supprimer le contrôle ajouté, il aurait été préférable que
j'utilise ceci :

On Error Resume Next
Application.CommandBars("Worksheet Menu Bar").Controls("Copie_Valeurs").Delete
COQUITO
Le #21671581
Merci beaucoup michdenis,

J'ai suivi exactement tes conseils et cela marche de façon impeccable.

Précédemment, j'avais mis le code de suppression du menu dans la procédure
Workbook_BeforeClose.

En utilisant Workbook_Deactivate, il n'y a plus de problème.

Merci encore et bonne fin de dimanche


"michdenis" news:
Pour supprimer le contrôle ajouté, il aurait été préférable que
j'utilise ceci :

On Error Resume Next
Application.CommandBars("Worksheet Menu
Bar").Controls("Copie_Valeurs").Delete




Publicité
Poster une réponse
Anonyme