bonsoir à tous
Comment peut on executer apres selection de cellules une macro avec un click droit soit directement soit avec l'apparition d'une commande dans le menu contextuel :roll: .
Merci d'avance
Version imprimable
bonsoir à tous
Comment peut on executer apres selection de cellules une macro avec un click droit soit directement soit avec l'apparition d'une commande dans le menu contextuel :roll: .
Merci d'avance
tiens voila un peu de code ...
un exemple d'utilisation, l'initialisation dans Workbook_openCode:
1
2
3
4
5
6
7
8
9
10
11
12 ' ' Rajout d'une entrée dans menu contextuel ' ' Function MenuCell(stCde As String, stMess As String) Dim mc As CommandBarControls Dim bo As CommandBarButton Set mc = CommandBars("Cell").Controls Set bo = mc.Add(msoControlButton, Temporary:=True) bo.Caption = stMess bo.OnAction = stCde End Function
La fonction RajoutePrefixe...Code:
1
2
3
4 Private Sub Workbook_Open() MenuCell "RajoutePrefixe", "RajoutePrefixe" End Sub
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 ' ' fonction exemple.. ' Sub RajoutePrefixe() Dim Pre As String Dim s as range, c As Object Pre = InputBox("prefixe") Set s = Selection For Each c In s c.Value = Pre & c.Value Next End Sub
merci bbil pour ton code
Je l'ai placé dans this workbook.
Mais j'ai une erreur lorsque je demarre le classeur "variable objet ou variable de bloc with non definie" dans la fonction menucell, sur la ligne :
J'ai certainement mal interpreté quelque chose, car pour le moment j'ai pas tout capté dans le code.Code:
1
2 Set mc = CommandBars("Cell").Controls
Mais bon si tu peux encore me donner un coup de pouce.*
dans ThisWorkbook .. il ne faut ne mettre que le Work...open....
le reste dans un module public ...
au passage c'est quoi ta version d'excel..?
Ma version d'excel c'est une version 2003
au cas ou le nom du menu ne serai pas Cell en version 2003 essai le code suivant pour lister les noms de "commandBar" dans la fenêtre exécution
Code:
1
2
3
4
5
6
7 Sub Test() Dim mc As CommandBar For Each mc In CommandBars Debug.Print mc.Name & " = " & mc.NameLocal Next End Sub
Non pas de soucis avec 2003
tout marche impec.
Mais y a t il le moyen pour qu'il apparaisse au debut du menu contextuel au lieu de la fin.
merci encore
pour le placer au début:
Code:
1
2 Set bo = mc.Add(msoControlButton, Temporary:=True, Before:=1)
merci bbil
alors là c'est du tonnerre c'est exactement ce que je recherchait.
Encore merci
Je reviens à la charge sur une autre question au niveau du menu contextuel.
Peut on le faire apparaitre toujour au même endroit par rapport au pointeur de la souris car si le pointeur de la souris est vers le bas de l'ecran, il s'affiche en pointant le bas du menu et si c'est en haut de l'ecran, il pointe le haut du menu.
Peut on le forcer à pointer toujours le haut pour etre le plus pres de ma commande qui est dans le menu contextuel.meme si le menu apparait avec une partie en dehors de l'cran.
Merci