Menu contextuel dynamique

Bonjour,

comme vous l'avez certainement remarqué, le menu contextuel de base obtenu par un clic droit sur un tableau structuré dépend de la ligne ou de la colonne sur laquelle on fait le clic droit.

Par exemple, il y a plus de commandes dans le sous-menu Insérer si on clique sur la cellule de la dernière ligne/dernière colonne du tableau (4 commandes) que si on clique sur la cellule de la 1ère ligne/1ère colonne (2 commandes).

Sauriez-vous, svp, comment une telle adaptation de ce menu contextuel est possible ?

Merci par avance.

Yohann

Pour ceux que ça intéresse, il faut en fait définir le menu contextuel différemment selon la ligne choisie; exemple ci-dessous:

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    MonCliqueDroit Sh, Target, False
End Sub

Function MonCliqueDroit(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

    Application.CommandBars("List Range Popup").Reset

    Dim TB As ListObject, data As Range
    Set TB = ActiveSheet.ListObjects(1)
    Set data = TB.DataBodyRange

    If Application.Intersect(Target, Range(TB.DisplayName & "[#ALL]")) Is Nothing Then
        Exit Function
    End If

    Set ContextMenu = Application.CommandBars("List Range Popup")
    For Each Item In ContextMenu.Controls
        Item.Delete
    Next

    Dim position_ligne As Long
    position_ligne = Target.Row - data.Row 'data.Row est la ligne Excel où démarre le tableau structuré (première ligne après l'en-tête)

    If position_ligne = -1 Or position_ligne = 0 Or position_ligne = 1 Then Exit Function 'on ne veut pas de menu contextuel pour la ligne d'en-tête et les 2 premières lignes du tableau

    If position_ligne = 2 Then 'menu contextuel propre à la 3ème ligne du tableau
        MenuInsertion2 "AjouteLigneApres", "&Insérer une ligne en dessous"
    ElseIf position_ligne = data.Rows.Count - 1 Then 'menu contextuel de la dernière ligne du tableau
        MenuInsertion1 "AjouteLigneAvant", "&Insérer une ligne au-dessus"
    Else 'pour toutes les autres lignes du tableau
        MenuInsertion "AjouteLigneAvant", "Ligne &au-dessus", "AjouteLigneApres", "Ligne &en dessous"
        MenuSuppression "SupprimeLigne", "&Supprimer la ligne"
        MenuNiveau "MonteNiveau", "&Monter d'un niveau", "BaisseNiveau", "&Baisser d'un niveau"
    End If

End Function
Rechercher des sujets similaires à "menu contextuel dynamique"