Comment exécuter plusieurs macros à partir du menu contextuel dans Excel ?

Si votre classeur contient plusieurs macros VBA, vous devez ouvrir la fenêtre VBA et choisir la macro lorsque vous souhaitez exécuter le code. Dans cet article, je vais expliquer comment exécuter des macros à partir du menu contextuel pour rendre votre travail plus efficace, comme illustré dans la capture d'écran de gauche.
Exécuter plusieurs macros depuis le menu contextuel avec des codes VBA
Exécuter plusieurs macros depuis le menu contextuel avec des codes VBA
Pour exécuter les codes macros d'un classeur à partir du menu contextuel, les étapes suivantes peuvent vous aider, veuillez procéder comme suit :
1. Maintenez les touches Alt + F11 enfoncées pour ouvrir la fenêtre Microsoft Visual Basic for Applications.
2. Ensuite, double-cliquez sur ThisWorkbook dans le volet Projet à gauche, puis copiez et collez le code VBA ci-dessous dans le module vide.
Private Sub Workbook_Open()
Run "LoadMacro"
End Sub
Private Sub Workbook_Activate()
Run "LoadMacro"
End Sub
Private Sub Workbook_Deactivate()
Run "ClearMacro"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Run "ClearMacro"
ThisWorkbook.Save
End Sub
3. Toujours dans la fenêtre Microsoft Visual Basic for Applications, cliquez sur Insérer > Module, et collez le code suivant dans ce module.
Private Sub LoadMacro()
Dim xArrMenu As Variant
Dim xStrLine, xSreBtnName As String
Dim xObjCBCF, xObjCntrAll As CommandBarControl
Dim xObjCBCs As CommandBars
Dim xObjCBBtn As CommandBarButton
Dim xIntLine, xFNum As Integer
Dim xObjComponent As Object
Run "ClearMacro"
Set xObjCBCF = Application.CommandBars("Cell").Controls.Add(msoControlPopup, before:=1)
xObjCBCF.Caption = " Run Macro "
xObjCBCF.BeginGroup = False
For Each xObjComponent In ActiveWorkbook.VBProject.VBComponents
If xObjComponent.Type = 1 Then
For xIntLine = 1 To xObjComponent.CodeModule.CountOfLines
xStrLine = xObjComponent.CodeModule.Lines(xIntLine, 1)
xStrLine = Trim(xStrLine)
If (InStr(xStrLine, "()") > 0) And (Left(xStrLine, 11) = "Private Sub" Or Left(xStrLine, 3) = "Sub") Then
xSreBtnName = ""
If "Private Sub" = Left(xStrLine, 11) Then
xSreBtnName = Trim(Mid(xStrLine, 12, InStr(xStrLine, "()") - 12))
ElseIf "Sub" = Left(xStrLine, 3) Then
xSreBtnName = Trim(Mid(xStrLine, 4, InStr(xStrLine, "()") - 4))
End If
If xSreBtnName <> "" And xSreBtnName <> "RightClickReset" And xSreBtnName <> "LoadMacro" And xSreBtnName <> "ActionMacro" Then
Set xObjCBBtn = xObjCBCF.Controls.Add
With xObjCBBtn
.FaceId = 186
.Style = msoButtonIconAndCaption
.Caption = xSreBtnName
.OnAction = "ActionMacro"
End With
End If
End If
Next xIntLine
End If
Next xObjComponent
End Sub
Private Sub ClearMacro()
On Error Resume Next
CommandBars("Cell").Controls(" Run Macro ").Delete
Err.Clear
CommandBars("Cell").Reset
End Sub
Private Sub ActionMacro()
On Error GoTo Err1
With Application
Run .CommandBars("Cell").Controls(1).Controls(.Caller(1)).Caption
End With
Exit Sub
Err1:
MsgBox "Invalid"
End Sub
4. Après avoir collé les codes, cliquez sur Outils > Références, et une boîte de dialogue Références-VBAProject s'affiche. Cochez ensuite l'option Microsoft Visual Basic for Applications Extensibility 5.3 dans la liste des références disponibles, voir capture d'écran :
5. Cliquez ensuite sur OK pour quitter la boîte de dialogue. Ensuite, vous devez enregistrer ce classeur au format Classeur Excel avec macros activées, voir capture d'écran :
6. Enfin, redémarrez le classeur pour que les codes prennent effet. Maintenant, lorsque vous faites un clic droit sur une cellule, une option Exécuter une macro est insérée dans le menu contextuel, et toutes les macros de votre classeur sont listées dans le sous-menu, comme le montre la capture d'écran suivante :
7. Vous pouvez ensuite exécuter le code simplement en cliquant dessus.
Meilleurs outils de productivité pour Office
Améliorez vos compétences Excel avec Kutools pour Excel, et découvrez une efficacité incomparable. Kutools pour Excel propose plus de300 fonctionnalités avancées pour booster votre productivité et gagner du temps. Cliquez ici pour obtenir la fonctionnalité dont vous avez le plus besoin...
Office Tab apporte l’interface par onglets à Office, simplifiant considérablement votre travail.
- Activez la modification et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
- Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
- Augmente votre productivité de50 % et réduit des centaines de clics de souris chaque jour !
Tous les modules complémentaires Kutools. Une seule installation
La suite Kutools for Office regroupe les modules complémentaires pour Excel, Word, Outlook & PowerPoint ainsi qu’Office Tab Pro, idéal pour les équipes travaillant sur plusieurs applications Office.





- Suite tout-en-un — modules complémentaires Excel, Word, Outlook & PowerPoint + Office Tab Pro
- Un installateur, une licence — installation en quelques minutes (compatible MSI)
- Une synergie optimale — productivité accélérée sur l’ensemble des applications Office
- Essai complet30 jours — sans inscription, ni carte bancaire
- Meilleure valeur — économisez par rapport à l’achat d’add-ins individuels