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

Si plusieurs macros VBA sont présentes dans votre classeur, vous devez ouvrir la fenêtre VBA et sélectionner la macro souhaitée pour exécuter le code. Dans cet article, je vous explique comment lancer vos macros directement depuis le menu contextuel afin de gagner en efficacité, 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 macros d’un classeur à partir du menu contextuel, suivez ces étapes simples :
1. Maintenez enfoncées les touches Alt + F11 pour ouvrir la fenêtre Microsoft Visual Basic pour Applications.
2. Ensuite, double-cliquez sur CeClasseur dans le volet gauche Projet, puis copiez et collez le code VBA ci-dessous dans le module vierge.
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 pour Applications, cliquez sur Insertion > Module, puis 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. La boîte de dialogue Références - ProjetVBA s’affiche. Cochez alors l’option Extensibilité Microsoft Visual Basic pour Applications 5,3 dans la liste Références disponibles, comme indiqué dans la capture d’écran :

5. Cliquez ensuite sur OK pour fermer la boîte de dialogue. Vous devez maintenant enregistrer ce classeur au format Classeur Excel prenant en charge les macros, comme illustré dans la capture d’écran :

6. Enfin, veuillez redémarrer le classeur pour que les codes prennent effet. Désormais, lorsque vous cliquerez avec le bouton droit sur une cellule, une option Exécuter une macro apparaîtra dans le menu contextuel, et toutes les macros de votre classeur seront listées dans un sous-menu, comme le montre la capture d’écran suivante :

7. Vous pouvez alors exécuter le code en un seul clic.
Meilleurs outils de productivité Office
Boostez vos compétences Excel avec Kutools pour Excel et découvrez une efficacité inégalée.Kutools pour Excel propose plus de 300 fonctionnalités avancées pour améliorer votre productivité et Gagner du temps.Cliquez ici pour obtenir la fonctionnalité dont vous avez le plus besoin...
Office Tab apporte une interface à onglets à Office et rend votre travail bien plus facile
- Activez l’édition 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é de 50 % et vous fait économiser des centaines de clics de souris chaque jour !
Tous les compléments Kutools. Un seul installateur
Kutools for Office regroupe les compléments pour Excel, Word, Outlook et PowerPoint, ainsi que Office Tab Pro, ce qui en fait le choix idéal pour les équipes travaillant à travers les applications Office.
- Suite tout-en-un— Compléments Excel, Word, Outlook et PowerPoint + Office Tab Pro
- Un seul installateur, une seule licence— installation en quelques minutes (compatible MSI)
- Fonctionne mieux ensemble— productivité optimisée dans toutes les applications Office
- Essai gratuit de 30 jours avec toutes les fonctionnalités— aucune inscription, aucune carte bancaire
- Meilleur rapport qualité-prix— économisez par rapport à l’achat de compléments individuels