La procédure suivante répertorie toutes les menus contextuels intégrés et personnalisées dans la feuille de calcul MenusContextuels du fichier d’exemple. Dans la boucle For…Each, la liste CommandBars est vérifiée pour les menus contextuels dans une requête If et les résultats sont répertoriés dans la feuille de calcul.
Public Sub ObtenirMenusContextuels() Dim cmb As CommandBar Dim lngLine As Long Application.ScreenUpdating = False lngLine = 1 With Worksheets("MenusContextuels") ' supprimer les anciennes valeurs .Columns("A:E").ClearContents ' Modifier le titre .Range("A1:E1").Value = Array("Indice", "ID", "Nom", _ "Nom local", "Intégrer") For Each cmb In Application.CommandBars If cmb.Type = msoBarTypePopup Then ' Vérifier si la barre de commandes est un menu contextuel lngLine = lngLine + 1 .Cells(lngLine, 1) = cmb.Index .Cells(lngLine, 2) = cmb.ID .Cells(lngLine, 3) = cmb.Name .Cells(lngLine, 4) = cmb.NameLocal .Cells(lngLine, 5) = cmb.BuiltIn .Cells(lngLine, 5) = cmb.BuiltIn End If Next cmb End With Application.ScreenUpdating = True End Sub
Commentaires
■ La propriété index vous indique le numéro d’index.
■ Excel connaît deux noms pour chaque barre de commandes. Pour une barre de commandes intégrée, la propriété Name renvoie le nom anglais américain du menu contextuel.
■ Utilisez la propriété NameLocal pour obtenir le nom traduit. Le nom local d’un menu contextuel est imprimé dans l’info-bulle de chaque élément de bouton avant le nom de la procédure.
■ La propriété BuiltIn renvoie une valeur booléenne indiquant si la barre de commandes est intégrée ou personnalisée. Vrai signifie intégré. Faux sinon.