Barre de menus personnalisée

Le
Pounet95
Bonsoir à toutes et tous,
Windows XP / Windows 2000 et Excel2000

Dans une application, j'ai remplacé la barre de menu contextuelle cell par
une barre de menu personnalisée.
Dans le module du classeur, l'évènement BeforeRightClick contient donc :

Application.Commandbars("Cell").Enabledúlse
Application.Commandbars("MonMenuContextuel").ShowPopUp
Cancel=True

Tant que je suis dans le classeur, pas de problème.
Là où ça se complique c'est quand dans la même instance d'Excel on ouvre un
ou plusieurs autres classeurs,
on ne dispose plus du menu 'normal' Excel.
En utilisant les évènements WorkbookActivate et WorkbookDeActivate, j'arrive
bien à avoir le bon menu dans le bon classeur, mais
dans le cas de copier/coller par exemple, le fait de passer du classeur
'normal' au classeur 'applicatif', je perd le contenu du copier/coller.

Pensez-vous qu'il soit possible de remédier à cet inconvénient autrement
qu'en rajoutant au menu "Cell" les menus de ma barre perso ?
Merci de vos suggestions.

Pounet95
Questions / Réponses high-tech
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
tissot.emmanuel
Le #4542621
Bonsoir,

Application.Commandbars("Cell").Enabledúlse
Cancel=True


Ces instructions font double emploi, la 1ere desactive le menu contextuel
standard et la deuxieme annule son apparition.

Là où ça se complique c'est quand dans la même instance d'Excel on ouvre
un ou plusieurs autres classeurs,
on ne dispose plus du menu 'normal' Excel.


Logique puisque ce menu est désactivé.

Dans le module ThisWorkbook du classeur 'Applicatif'

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target
As Range, Cancel As Boolean)
Application.CommandBars("MonMenuContextuel").ShowPopup
Cancel = True
End Sub

Est suffisant pour que ton menu contextuel personnalisé s'affiche dans
toutes les feuilles de ce classeur et seulement dans celui la, sans avoir
recours aux evenements Workbook_Activate et Workbook_Deactivate.

Concernant la perte du copier-coller je n'ai pas réussi à reproduire le
probleme, chez moi ca fonctionne dans les deux sens. Il faudrait voir ce que
tu as dans ta procédure Workbook_Activate.

Cordialement,

Manu/





----- Original Message -----
From: "Pounet95" Newsgroups: microsoft.public.fr.excel
Sent: Monday, May 28, 2007 6:23 PM
Subject: Barre de menus personnalisée


Bonsoir à toutes et tous,
Windows XP / Windows 2000 et Excel2000

Dans une application, j'ai remplacé la barre de menu contextuelle cell par
une barre de menu personnalisée.
Dans le module du classeur, l'évènement BeforeRightClick contient donc :

Application.Commandbars("Cell").Enabledúlse
Application.Commandbars("MonMenuContextuel").ShowPopUp
Cancel=True

Tant que je suis dans le classeur, pas de problème.
Là où ça se complique c'est quand dans la même instance d'Excel on ouvre
un ou plusieurs autres classeurs,
on ne dispose plus du menu 'normal' Excel.
En utilisant les évènements WorkbookActivate et WorkbookDeActivate,
j'arrive bien à avoir le bon menu dans le bon classeur, mais
dans le cas de copier/coller par exemple, le fait de passer du classeur
'normal' au classeur 'applicatif', je perd le contenu du copier/coller.

Pensez-vous qu'il soit possible de remédier à cet inconvénient autrement
qu'en rajoutant au menu "Cell" les menus de ma barre perso ?
Merci de vos suggestions.

Pounet95



Pounet95
Le #4542071
Bonjour,
Tout d'abord merci pour l'explication du double emploi. Je n'avais pas bien
compris l'exemple de l'aide.
Dans les évènements Activate/DeActivate du Workbook, il n'y a plus rien
depuis que j'ai le problème. Mais avant j'y mettais de quoi rétablir le bon
menu Excel ou Applicatif.
J'ai donc corrigé en fonction de ton explication et déjà les 'bêtatesteurs'
ralent ;o((( car ils voudraient TOUT : le menu contextuel normal et le
personnalisé !!!
Sauf à ajouter le personnalisé au standard, je ne vois pas comment faire.

Je vais tenter de trouver une solution, mais suis toujours preneur de toute
suggestion.
Merci encore
Pounet95



"tissot.emmanuel"
Bonsoir,

Application.Commandbars("Cell").Enabledúlse
Cancel=True


Ces instructions font double emploi, la 1ere desactive le menu contextuel
standard et la deuxieme annule son apparition.

Là où ça se complique c'est quand dans la même instance d'Excel on ouvre
un ou plusieurs autres classeurs,
on ne dispose plus du menu 'normal' Excel.


Logique puisque ce menu est désactivé.

Dans le module ThisWorkbook du classeur 'Applicatif'

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal
Target
As Range, Cancel As Boolean)
Application.CommandBars("MonMenuContextuel").ShowPopup
Cancel = True
End Sub

Est suffisant pour que ton menu contextuel personnalisé s'affiche dans
toutes les feuilles de ce classeur et seulement dans celui la, sans avoir
recours aux evenements Workbook_Activate et Workbook_Deactivate.

Concernant la perte du copier-coller je n'ai pas réussi à reproduire le
probleme, chez moi ca fonctionne dans les deux sens. Il faudrait voir ce
que
tu as dans ta procédure Workbook_Activate.

Cordialement,

Manu/





----- Original Message -----
From: "Pounet95" Newsgroups: microsoft.public.fr.excel
Sent: Monday, May 28, 2007 6:23 PM
Subject: Barre de menus personnalisée


Bonsoir à toutes et tous,
Windows XP / Windows 2000 et Excel2000

Dans une application, j'ai remplacé la barre de menu contextuelle cell
par une barre de menu personnalisée.
Dans le module du classeur, l'évènement BeforeRightClick contient donc :

Application.Commandbars("Cell").Enabledúlse
Application.Commandbars("MonMenuContextuel").ShowPopUp
Cancel=True

Tant que je suis dans le classeur, pas de problème.
Là où ça se complique c'est quand dans la même instance d'Excel on ouvre
un ou plusieurs autres classeurs,
on ne dispose plus du menu 'normal' Excel.
En utilisant les évènements WorkbookActivate et WorkbookDeActivate,
j'arrive bien à avoir le bon menu dans le bon classeur, mais
dans le cas de copier/coller par exemple, le fait de passer du classeur
'normal' au classeur 'applicatif', je perd le contenu du copier/coller.

Pensez-vous qu'il soit possible de remédier à cet inconvénient autrement
qu'en rajoutant au menu "Cell" les menus de ma barre perso ?
Merci de vos suggestions.

Pounet95






tissot.emmanuel
Le #4541801
Bonjour,

J'ai donc corrigé en fonction de ton explication et déjà les
'bêtatesteurs' ralent ;o((( car ils voudraient TOUT : le menu contextuel
normal et le personnalisé !!!


Pour que le menu standard s'affiche après ton menu perso il suffit d'enlever
Cancel = True.

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target
As Range, Cancel As Boolean)
Application.CommandBars("MonMenuContextuel").ShowPopup
End Sub

Pour que le menu standard s'affiche avant le menu perso:

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target
As Range, Cancel As Boolean)
Application.CommandBars("Cell").ShowPopup
Application.CommandBars("MonMenuContextuel").ShowPopup
Cancel=True
End Sub

Ces solutions ne sont en général pas très satisfaisante pour les betas, donc
si tu veux intégrer les commandes personnalisées au menu standard uniquement
pour le classeur 'Applicatif':

Dans ThisWorkBook:

Private Sub Workbook_Open()
Application.CommandBars("Cell").Reset
With Application.CommandBars("Cell").Controls
.Add Type:=msoControlButton
.Item(.Count).Caption = "Macro1"
.Item(.Count).OnAction = "Macro1"
.Add Type:=msoControlButton
.Item(.Count).Caption = "Macro2"
.Item(.Count).OnAction = "Macro2"
End With
End Sub

Private Sub Workbook_Deactivate()
Dim cc As CommandBarControl
For Each cc In Application.CommandBars("Cell").Controls
If cc.BuiltIn = False Then cc.Visible = False
Next
End Sub

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target
As Range, Cancel As Boolean)
Dim cc As CommandBarControl
For Each cc In Application.CommandBars("Cell").Controls
If cc.BuiltIn = False Then cc.Visible = True
Next
End Sub

Dans un module Standard:
Public Sub Macro1()
MsgBox "Macro1"
End Sub

Public Sub Macro2()
MsgBox "Macro2"
End Sub

Je te laisse gérer la remise en etat du menu dans Workbook_BeforeClose,
revient si ca pose probleme.

Cordialement,

Manu/



"Pounet95" 465c0214$0$25910$
Bonjour,
Tout d'abord merci pour l'explication du double emploi. Je n'avais pas
bien compris l'exemple de l'aide.
Dans les évènements Activate/DeActivate du Workbook, il n'y a plus rien
depuis que j'ai le problème. Mais avant j'y mettais de quoi rétablir le
bon menu Excel ou Applicatif.
J'ai donc corrigé en fonction de ton explication et déjà les
'bêtatesteurs' ralent ;o((( car ils voudraient TOUT : le menu contextuel
normal et le personnalisé !!!
Sauf à ajouter le personnalisé au standard, je ne vois pas comment faire.

Je vais tenter de trouver une solution, mais suis toujours preneur de
toute suggestion.
Merci encore
Pounet95



"tissot.emmanuel" news:
Bonsoir,

Application.Commandbars("Cell").Enabledúlse
Cancel=True


Ces instructions font double emploi, la 1ere desactive le menu contextuel
standard et la deuxieme annule son apparition.

Là où ça se complique c'est quand dans la même instance d'Excel on ouvre
un ou plusieurs autres classeurs,
on ne dispose plus du menu 'normal' Excel.


Logique puisque ce menu est désactivé.

Dans le module ThisWorkbook du classeur 'Applicatif'

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal
Target
As Range, Cancel As Boolean)
Application.CommandBars("MonMenuContextuel").ShowPopup
Cancel = True
End Sub

Est suffisant pour que ton menu contextuel personnalisé s'affiche dans
toutes les feuilles de ce classeur et seulement dans celui la, sans avoir
recours aux evenements Workbook_Activate et Workbook_Deactivate.

Concernant la perte du copier-coller je n'ai pas réussi à reproduire le
probleme, chez moi ca fonctionne dans les deux sens. Il faudrait voir ce
que
tu as dans ta procédure Workbook_Activate.

Cordialement,

Manu/





----- Original Message -----
From: "Pounet95" Newsgroups: microsoft.public.fr.excel
Sent: Monday, May 28, 2007 6:23 PM
Subject: Barre de menus personnalisée


Bonsoir à toutes et tous,
Windows XP / Windows 2000 et Excel2000

Dans une application, j'ai remplacé la barre de menu contextuelle cell
par une barre de menu personnalisée.
Dans le module du classeur, l'évènement BeforeRightClick contient donc :

Application.Commandbars("Cell").Enabledúlse
Application.Commandbars("MonMenuContextuel").ShowPopUp
Cancel=True

Tant que je suis dans le classeur, pas de problème.
Là où ça se complique c'est quand dans la même instance d'Excel on ouvre
un ou plusieurs autres classeurs,
on ne dispose plus du menu 'normal' Excel.
En utilisant les évènements WorkbookActivate et WorkbookDeActivate,
j'arrive bien à avoir le bon menu dans le bon classeur, mais
dans le cas de copier/coller par exemple, le fait de passer du classeur
'normal' au classeur 'applicatif', je perd le contenu du copier/coller.

Pensez-vous qu'il soit possible de remédier à cet inconvénient autrement
qu'en rajoutant au menu "Cell" les menus de ma barre perso ?
Merci de vos suggestions.

Pounet95










Pounet95
Le #4541731
Re merci,
Je prends bonne note de tout cela et, en parallèle, j'envoie mes
'bêtatesteurs' se promener.
Si on les écoute, il faudrait presque réinventer Excel. ( Quoiqu'une version
2008 serait peut-être bienvenue si j'en crois certains posts de ce forum ! )
Bonne journée
Pounet95

"tissot.emmanuel"
Bonjour,

J'ai donc corrigé en fonction de ton explication et déjà les
'bêtatesteurs' ralent ;o((( car ils voudraient TOUT : le menu contextuel
normal et le personnalisé !!!


Pour que le menu standard s'affiche après ton menu perso il suffit
d'enlever Cancel = True.

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal
Target As Range, Cancel As Boolean)
Application.CommandBars("MonMenuContextuel").ShowPopup
End Sub

Pour que le menu standard s'affiche avant le menu perso:

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal
Target As Range, Cancel As Boolean)
Application.CommandBars("Cell").ShowPopup
Application.CommandBars("MonMenuContextuel").ShowPopup
Cancel=True
End Sub

Ces solutions ne sont en général pas très satisfaisante pour les betas,
donc si tu veux intégrer les commandes personnalisées au menu standard
uniquement pour le classeur 'Applicatif':

Dans ThisWorkBook:

Private Sub Workbook_Open()
Application.CommandBars("Cell").Reset
With Application.CommandBars("Cell").Controls
.Add Type:=msoControlButton
.Item(.Count).Caption = "Macro1"
.Item(.Count).OnAction = "Macro1"
.Add Type:=msoControlButton
.Item(.Count).Caption = "Macro2"
.Item(.Count).OnAction = "Macro2"
End With
End Sub

Private Sub Workbook_Deactivate()
Dim cc As CommandBarControl
For Each cc In Application.CommandBars("Cell").Controls
If cc.BuiltIn = False Then cc.Visible = False
Next
End Sub

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal
Target As Range, Cancel As Boolean)
Dim cc As CommandBarControl
For Each cc In Application.CommandBars("Cell").Controls
If cc.BuiltIn = False Then cc.Visible = True
Next
End Sub

Dans un module Standard:
Public Sub Macro1()
MsgBox "Macro1"
End Sub

Public Sub Macro2()
MsgBox "Macro2"
End Sub

Je te laisse gérer la remise en etat du menu dans Workbook_BeforeClose,
revient si ca pose probleme.

Cordialement,

Manu/



"Pounet95" 465c0214$0$25910$
Bonjour,
Tout d'abord merci pour l'explication du double emploi. Je n'avais pas
bien compris l'exemple de l'aide.
Dans les évènements Activate/DeActivate du Workbook, il n'y a plus rien
depuis que j'ai le problème. Mais avant j'y mettais de quoi rétablir le
bon menu Excel ou Applicatif.
J'ai donc corrigé en fonction de ton explication et déjà les
'bêtatesteurs' ralent ;o((( car ils voudraient TOUT : le menu contextuel
normal et le personnalisé !!!
Sauf à ajouter le personnalisé au standard, je ne vois pas comment faire.

Je vais tenter de trouver une solution, mais suis toujours preneur de
toute suggestion.
Merci encore
Pounet95



"tissot.emmanuel" news:
Bonsoir,

Application.Commandbars("Cell").Enabledúlse
Cancel=True


Ces instructions font double emploi, la 1ere desactive le menu
contextuel
standard et la deuxieme annule son apparition.

Là où ça se complique c'est quand dans la même instance d'Excel on
ouvre un ou plusieurs autres classeurs,
on ne dispose plus du menu 'normal' Excel.


Logique puisque ce menu est désactivé.

Dans le module ThisWorkbook du classeur 'Applicatif'

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal
Target
As Range, Cancel As Boolean)
Application.CommandBars("MonMenuContextuel").ShowPopup
Cancel = True
End Sub

Est suffisant pour que ton menu contextuel personnalisé s'affiche dans
toutes les feuilles de ce classeur et seulement dans celui la, sans
avoir
recours aux evenements Workbook_Activate et Workbook_Deactivate.

Concernant la perte du copier-coller je n'ai pas réussi à reproduire le
probleme, chez moi ca fonctionne dans les deux sens. Il faudrait voir ce
que
tu as dans ta procédure Workbook_Activate.

Cordialement,

Manu/





----- Original Message -----
From: "Pounet95" Newsgroups: microsoft.public.fr.excel
Sent: Monday, May 28, 2007 6:23 PM
Subject: Barre de menus personnalisée


Bonsoir à toutes et tous,
Windows XP / Windows 2000 et Excel2000

Dans une application, j'ai remplacé la barre de menu contextuelle cell
par une barre de menu personnalisée.
Dans le module du classeur, l'évènement BeforeRightClick contient donc
:

Application.Commandbars("Cell").Enabledúlse
Application.Commandbars("MonMenuContextuel").ShowPopUp
Cancel=True

Tant que je suis dans le classeur, pas de problème.
Là où ça se complique c'est quand dans la même instance d'Excel on
ouvre un ou plusieurs autres classeurs,
on ne dispose plus du menu 'normal' Excel.
En utilisant les évènements WorkbookActivate et WorkbookDeActivate,
j'arrive bien à avoir le bon menu dans le bon classeur, mais
dans le cas de copier/coller par exemple, le fait de passer du classeur
'normal' au classeur 'applicatif', je perd le contenu du copier/coller.

Pensez-vous qu'il soit possible de remédier à cet inconvénient
autrement qu'en rajoutant au menu "Cell" les menus de ma barre perso ?
Merci de vos suggestions.

Pounet95














Publicité
Poster une réponse
Anonyme