Bonjour à toutes et à tous,
Suite à cette discussion grâce à laquelle j'ai, je pense, compris comment ajouter un contrôle déclenchant une macro dans un menu contextuel, j'ai malgré tout ce message d'erreur qui apparaît après redémarrage de l'ordinateur:
Impossible d'exécuter la macro ''C:\Chemin\PERSONAL.xlsb'!DateDoc'. Il est possible qu'elle ne soit pas disponible dans ce classeur ou que toutes les macros soient désactivées.
Voici les codes que j'utilise pour ajouter le contrôle:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| Option Base 1
Private mccd(2) As CommandBar 'menu contextuel clic-droit
Private ctrl As Variant 'contrôle d'un menu contextuel
Private i As Byte
Sub AjouteContrôleDateDoc()
Set mccd(1) = Application.CommandBars("Cell")
Set mccd(2) = Application.CommandBars("Query")
EffaceContrôle
For i = 1 To 2
With mccd(i).Controls _
.add(msoControlButton, , , 6)
.Caption = "Date du jour"
.OnAction = "MenusContextuels.DateDoc"
.Tag = "ContrôlePerso"
End With
mccd(i).Controls(6).BeginGroup = True
Next
End Sub
Sub EffaceContrôle()
Set mccd(1) = Application.CommandBars("Cell")
Set mccd(2) = Application.CommandBars("Query")
For i = 1 To 2
For Each ctrl In mccd(i).Controls
If ctrl.Tag = "ContrôlePerso" Then ctrl.Delete
Next ctrl
Next
End Sub |
Précision, en lançant ce code après le message d'erreur, "Date du jour" et l'emplacement de la macro apparaissent bien dans la fenêtre d'exécution (Ctrl+G).
1 2 3 4 5 6 7 8 9 10 11 12
| Sub InfoMenus()
Set mccd(1) = Application.CommandBars("Cell")
Set mccd(2) = Application.CommandBars("Query")
For i = 1 To 2
For Each ctrl In mccd(i).Controls
If ctrl.Tag = "ContrôlePerso" Then Debug.Print ctrl.Caption & Chr(9) & ctrl.OnAction
Next ctrl
Next
End Sub |
Quelqu'un ou quelqu'une aurait-il ou elle une idée d'où le problème vient?
Cordialement
Partager