OVH Cloud OVH Cloud

menu contextuel

1 réponse
Avatar
Fred C.
Je désire réaliser un menu contextuel personnalisé (clic droit de la souris)
pour lancer des macros. Mais seulement si la feuille est protégée sinon sur
clic droit le menu standard apparaît.
Pouvez vous m'indiquer comment réaliser cette application ?

Merci d'avance

Frédéric

1 réponse

Avatar
Frédéric Sigonneau
Bonjour,

Pour créer un menu contextuel perso, tu peux utiliser ce genre de code, à
adapter à ton besoin.

1- Dans un module standard :

'===================== Sub CreatePopupMenu()
Dim MaBarre As CommandBar
DelPopupMenu
Set MaBarre = Application.CommandBars _
.Add(Name:="ClicDroit", Position:=msoBarPopup)
With MaBarre
.Controls.Add Type:=msoControlButton
.Controls(1).OnAction = "Macro1"
.Controls(1).Caption = "Commande1"
.Controls.Add Type:=msoControlButton
.Controls(2).OnAction = "Macro2"
.Controls(2).Caption = "Commande2"
End With
MaBarre.ShowPopup
End Sub

Sub DelPopupMenu()
On Error Resume Next
Application.CommandBars("ClicDroit").Delete
End Sub

Sub Macro1()
MsgBox "Commande 1 cliquée"
End Sub

Sub Macro2()
MsgBox "Commande 2 cliquée"
End Sub
'=====================
2- Dans le module de code de la feuille de calcul où tu veux l'utiliser :

'===================== Private Sub Worksheet_BeforeRightClick( _
ByVal Target As Range, Cancel As Boolean)
If Me.ProtectContents + Me.ProtectDrawingObjects + _
Me.ProtectScenarios <> 0 Then
Cancel = True
CreatePopupMenu
End If
End Sub
'=====================
3- Dans le module de code ThisWorkbook :

'===================== Private Sub Workbook_BeforeClose(Cancel As Boolean)
DelPopupMenu
End Sub
'=====================
FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

Je désire réaliser un menu contextuel personnalisé (clic droit de la souris)
pour lancer des macros. Mais seulement si la feuille est protégée sinon sur
clic droit le menu standard apparaît.
Pouvez vous m'indiquer comment réaliser cette application ?

Merci d'avance

Frédéric