VBA pour menu contextuel

Fchris

XLDnaute Occasionnel
Bonjour à tous et mes meilleurs voeux à l'ensemble du forum.

Voilà, j'aimerais implémenter dans le menu contextuel standard qui apparaît lors du clic droit une commande de mise en forme personnalisée pour formater des colonnes de différents tableaux.

J'ai trouvé un code que j'ai adapté pour mon cas :

Code:
Private Sub Workbook_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
 
'Menu CONTEXTUEL
'avec le menu contextuel standard du clic droit ("cell")
With Application.CommandBars("cell")
    'ajoute en première ligne (before) un menu contextuel (popup)
    With .Controls.Add(msoControlButton, before:=1)
        'intitulé (caption) comme suit
        .Caption = "Mise en Forme Compta"
        .OnAction = "Compta"
    End With
End With
End Sub

Je place ce code dans ThisWorkbook

et le code suivant :

Code:
Sub Compta()

' Format_Compta
'
Dim Col As Long

Col = ActiveCell.Column

With Columns(Col).Select
        Selection.NumberFormat = _
        "_-* #,##0.00 _€_-;[Red]- #,##0.00 _€_-;_-* ""-""?? _€_-;_-@_-"

End With

Application.CommandBars("cell").Reset

End Sub

Ce code que je place dans un module.

Mon problème est le suivant :

J'ai placé l'ensemble dans mon classeur de macros personnel afin d'avoir la commande dans n'importe quel tableau que je pourrais ouvrir. Le souci, c'est que cela ne fonctionne pas. Je n'arrive à le faire fonctionner que si je le place dans le tableau en question. Dès que je le mets dans mes macros personnelles, le menu n'apparaît plus.

D'autre part, à chaque fois que je fais un clic droit, une nouvelle ligne de menu apparaît dans le menu contextuel, le menu se multiplie à chaque clic et ne revient à la normale que si j'exécute la commande. Je pense que ma commande de reset du menu est mal placée, mais je ne vois pas où la mettre pour arranger ce problème.

Merci de votre aide à tous.

Fchris
 

bonsouarmessieux

XLDnaute Junior
Re : VBA pour menu contextuel

Bonjour!
Je n'ai pas très bien compris ton problème mais j'ai peut être une piste: quand tu place ton code dans le classeur de macros personnels, il chage de nom. En effet, le sub "compta" va maintenant s'appeler "perso.xls!compta".
Je pense donc que dans ta commandbar, il faut changer le nom du sub que tu appelles.
Une autre solution (si c'est bien là le problème) conciste à enregistrer ta macro en temps que macro complémentaire car alors, le sub ne change pas de nom.
J'espère que ça te permettra d'avancer.
Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 500
Messages
2 089 007
Membres
104 003
dernier inscrit
adyady__