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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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 ?
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 ?