Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

personnal.xlsb et menu personnel qui foirent

15 réponses
Avatar
PatrIck
Bonjour =E0 tous,

j'ai du faire une connerie et =E0 pr=E9sent mon menu perso en XL2007 se pla=
nte et ensuite mon personnal.xlsb qui est bien dans le r=E9pertoire XLSTART=
=E0 partir duquel le menu se cr=E9ait ne se charge plus...sauf si je doubl=
e clique sur ce personnal.xlsb.

Je mets ici le d=E9but (une macro dans le menu, il y en a 10 normalement) d=
e la cr=E9ation qui fonctionnait pourtant depuis 2005 !

Le message d'erreur est : "la m=E9thode 'onaction de l'objet _ commandbarbu=
tton a =E9chou=E9"

Merci de votre aide=20


Sub CreationMenu() '2005
Dim Monmenu As CommandBarControl
Dim Ajout As CommandBarPopup ' , Monmenu As CommandBar
Dim MenuItem As CommandBarControl

'Efface le menu s'il existe encore
DeleteNouveauMenu ' effacer avant de recr=E9=E9er

Set Monmenu =3D Application.CommandBars(1).FindControl(ID:=3D30010)

If Monmenu Is Nothing Then
' Add the menu to the end
Set Ajout =3D CommandBars(1).Controls.Add(Type:=3DmsoControlPopup, Temporar=
y:=3DTrue)
Else
' Add the menu before Help
Set Ajout =3D CommandBars(1).Controls.Add(Type:=3DmsoControlPopup, before:=
=3DMonmenu.Index, Temporary:=3DTrue)
End If

' ajoute l'=E9tiquette au menu
Dim Auteur As String
Auteur =3D "Menu personnel" 'plus complet ( 02/2015 )
Ajout.Caption =3D Auteur

' Premier ITEM du MENU

Set MenuItem =3D Ajout.Controls.Add(Type:=3DmsoControlButton)
With MenuItem
.Caption =3D "Propri=E9tes du document"
.FaceId =3D 162 'ic=F4ne =E0 c=F4t=E9 du texte de commande
'---- c'est sur cette ligne que =E7a plante
.OnAction =3D "Prop" 'Nom de la macro - qui existe bien sur=20
'-----
End With
end sub


Sub DeleteNouveauMenu()
On Error Resume Next
Dim Auteur As String, Caption
Auteur =3D "Menu personnel"
Caption =3D Auteur
CommandBars(1).Controls(Auteur).Delete
End Sub

10 réponses

1 2
Avatar
MichD
Bonjour,

La macro que tu as publiée est fonctionnelle.

Lorsque tu as ce message "la méthode 'onaction de l'objet _
commandbarbutton a échoué", est-ce que tu as une ligne
en surbrillance? Si oui, laquelle? Est-ce que tu as ce message
lorsque tu cliques sur ton fichier xlsb à partir de l'explorateur
Windows lorsque tu tentes de l'ouvrir en solitaire? Si dans ces
procédures, tu utilises une gestion d'erreur, désactive-la pendant
que tu fais ces tests.

Je n'ai pas vu la macro "DeleteNouveauMenu" mais j'utiliserais
systématiquement à l'appel de ce type de macro à chaque ouverture du
fichier.

'-------------------------------
Sub DeleteNouveauMenu()
Dim C As CommandBarControl
On Error Resume Next
For Each C In Application.CommandBars(1).Controls
If C.BuiltIn = False Then
C.Delete
End If
Next
End Sub
'-------------------------------

Pour ce qui est du classeur de macros personnels, tu peux toujours
faire glisser les modules de ce dernier vers un nouveau classeur en
n'oubliant pas de faire un copier-coller des macros du Thisworkbook et
des modules feuilles. Lorsque le tout est sauvegardé, tu fermes Excel et
tu supprimes ton classeur de macros personnelles. Lors de la réouverture
d'Excel, tu recrées le classeur de macros personnelles et tu y ajoutes
les modules et macros que tu as sauvegardées.

Difficile de voir ce qui ne pas pas en pleine noirceur! ;-))
Avatar
Patrick
Merci Denis,
je n'ai pas de gestion d'erreur genre "on error resume next" si c'est ça
que tu veux dire;
pour la ligne qui est en surbrillance, c'est celle qui fait appel à la
macro "prop"

---------------------
.on action = "prop" ' sub() qui existe bien
---------------------
et je viens de la placer sous ce code de création de menu pour voir et
ça ne change rien...
Le code "deletenouveaumenu est celui-ci:

Sub DeleteNouveauMenu()
On Error Resume Next
Dim Auteur As String, Caption
Auteur = "Menu personnel" '
Caption = Auteur
CommandBars(1).Controls(Auteur).Delete
End Sub

Pour le personnal.xlsb, ce que j'ai fais, c'est le retirer de xlstart,
puis j'ai ouvert XL et j'en ai recréé un et puis j'ai fermé XL et j'ai
écrasé le nouveau avec l'ancien bcp plus gros.


Jamais eu ça avant.. grrrrr


Le 25-01-16 19:58, MichD a écrit :
Bonjour,

La macro que tu as publiée est fonctionnelle.

Lorsque tu as ce message "la méthode 'onaction de l'objet _
commandbarbutton a échoué", est-ce que tu as une ligne
en surbrillance? Si oui, laquelle? Est-ce que tu as ce message
lorsque tu cliques sur ton fichier xlsb à partir de l'explorateur
Windows lorsque tu tentes de l'ouvrir en solitaire? Si dans ces
procédures, tu utilises une gestion d'erreur, désactive-la pendant
que tu fais ces tests.

Je n'ai pas vu la macro "DeleteNouveauMenu" mais j'utiliserais
systématiquement à l'appel de ce type de macro à chaque ouverture du
fichier.

'-------------------------------
Sub DeleteNouveauMenu()
Dim C As CommandBarControl
On Error Resume Next
For Each C In Application.CommandBars(1).Controls
If C.BuiltIn = False Then
C.Delete
End If
Next
End Sub
'-------------------------------

Pour ce qui est du classeur de macros personnels, tu peux toujours
faire glisser les modules de ce dernier vers un nouveau classeur en
n'oubliant pas de faire un copier-coller des macros du Thisworkbook et
des modules feuilles. Lorsque le tout est sauvegardé, tu fermes Excel et
tu supprimes ton classeur de macros personnelles. Lors de la réouverture
d'Excel, tu recrées le classeur de macros personnelles et tu y ajoutes
les modules et macros que tu as sauvegardées.

Difficile de voir ce qui ne pas pas en pleine noirceur! ;-))
Avatar
MichD
macro "prop"
****Je suppose que la macro "Prop" est dans un MODULE STANDARD

"Le message d'erreur est : "la méthode 'onaction de l'objet _
commandbarbutton a échoué"
.on action = "prop"
****ce message d'erreur suggère que la méthode "OnAction" est
utilisée sur un contrôle qui ne possède pas cette méthode

Quel est le type du contrôle auquel tu affectes cette action?
Peux-tu donner la macro?


Pour le personnal.xlsb, ce que j'ai fais, c'est le retirer de xlstart,
puis j'ai ouvert XL et j'en ai recréé un et puis j'ai fermé XL et j'ai
écrasé le nouveau avec l'ancien bcp plus gros.



**** À la place d'écraser le nouveau fichier .xlsb, j'aurais fait un
copier-coller de toutes les macros de l'ancien fichier de macros
complémentaires vers le nouveau fichier .xlsb en prenant soin de
copier ces procédures dans les bons modules.
Avatar
Patrick
Je viens de faire un nouveau fichier pour te l'envoyer et là, avant de
le mettre sur dropbox, je remarque que ça fonctionne normalement !!!

Je pense que mon personnal est corrompu finalement, je vais donc en
refaire un nouveau avec les modules de l'original et je te tiens au jus

Merci encore et dans tous les cas je reviens donner des news...


Patrick


Le 25-01-16 21:14, MichD a écrit :


macro "prop"
****Je suppose que la macro "Prop" est dans un MODULE STANDARD

"Le message d'erreur est : "la méthode 'onaction de l'objet _
commandbarbutton a échoué"
.on action = "prop"
****ce message d'erreur suggère que la méthode "OnAction" est
utilisée sur un contrôle qui ne possède pas cette méthode

Quel est le type du contrôle auquel tu affectes cette action?
Peux-tu donner la macro?


> Pour le personnal.xlsb, ce que j'ai fais, c'est le retirer de xlstart,
puis j'ai ouvert XL et j'en ai recréé un et puis j'ai fermé XL et j'ai
écrasé le nouveau avec l'ancien bcp plus gros.



**** À la place d'écraser le nouveau fichier .xlsb, j'aurais fait un
copier-coller de toutes les macros de l'ancien fichier de macros
complémentaires vers le nouveau fichier .xlsb en prenant soin de
copier ces procédures dans les bons modules.


Avatar
PatrIck
Voilà...
c'est rentré dans l'ordre :)
Merci encore à Denis

P.

Le lundi 25 janvier 2016 21:40:10 UTC+1, Patrick a écrit :
Je viens de faire un nouveau fichier pour te l'envoyer et là, avant de
le mettre sur dropbox, je remarque que ça fonctionne normalement !!!

Je pense que mon personnal est corrompu finalement, je vais donc en
refaire un nouveau avec les modules de l'original et je te tiens au jus

Merci encore et dans tous les cas je reviens donner des news...


Patrick


Le 25-01-16 21:14, MichD a écrit :
>
>
> macro "prop"
> ****Je suppose que la macro "Prop" est dans un MODULE STANDARD
>
> "Le message d'erreur est : "la méthode 'onaction de l'objet _
> commandbarbutton a échoué"
> .on action = "prop"
> ****ce message d'erreur suggère que la méthode "OnAction" est
> utilisée sur un contrôle qui ne possède pas cette méthode
>
> Quel est le type du contrôle auquel tu affectes cette action?
> Peux-tu donner la macro?
>
>
> > Pour le personnal.xlsb, ce que j'ai fais, c'est le retirer de xlsta rt,
>> puis j'ai ouvert XL et j'en ai recréé un et puis j'ai fermé XL e t j'ai
>> écrasé le nouveau avec l'ancien bcp plus gros.
>
> **** À la place d'écraser le nouveau fichier .xlsb, j'aurais fait u n
> copier-coller de toutes les macros de l'ancien fichier de macros
> complémentaires vers le nouveau fichier .xlsb en prenant soin d e
> copier ces procédures dans les bons modules.
>
>
Avatar
Patrick
re,

j'ai néanmoins une question:
le code en question crée un menu que j'alimente sans soucis pour aller
vers des codes que j'ai depuis longtemps;
comment faire pour avoir un autre menu qui vient se coller à la droite
de celui qui est là depuis des années.
Pour l'instant, je ne sais pas faire autrement qu'un sous menu du menu
principal...
Je voudrais distinguer un autre menu que je dois faire pour placer sur
un autre pc.
J'ai bien essayé de mettre commandbars(2) la place de (1) ici mais ce
n'est pas ça..

Set Ajout = CommandBars(1).Controls.Add(Type:=msoControlPopup,
Temporary:=True)

Patrick (XL2007)

Le 27-01-16 10:49, PatrIck a écrit :
Voilà...
c'est rentré dans l'ordre :)
Merci encore à Denis

P.

Le lundi 25 janvier 2016 21:40:10 UTC+1, Patrick a écrit :
Je viens de faire un nouveau fichier pour te l'envoyer et là, avant de
le mettre sur dropbox, je remarque que ça fonctionne normalement !!!

Je pense que mon personnal est corrompu finalement, je vais donc en
refaire un nouveau avec les modules de l'original et je te tiens au jus

Merci encore et dans tous les cas je reviens donner des news...


Patrick


Le 25-01-16 21:14, MichD a écrit :


macro "prop"
****Je suppose que la macro "Prop" est dans un MODULE STANDARD

"Le message d'erreur est : "la méthode 'onaction de l'objet _
commandbarbutton a échoué"
.on action = "prop"
****ce message d'erreur suggère que la méthode "OnAction" est
utilisée sur un contrôle qui ne possède pas cette méthode

Quel est le type du contrôle auquel tu affectes cette action?
Peux-tu donner la macro?


> Pour le personnal.xlsb, ce que j'ai fais, c'est le retirer de xlstart,
puis j'ai ouvert XL et j'en ai recréé un et puis j'ai fermé XL et j'ai
écrasé le nouveau avec l'ancien bcp plus gros.



**** À la place d'écraser le nouveau fichier .xlsb, j'aurais fait un
copier-coller de toutes les macros de l'ancien fichier de macros
complémentaires vers le nouveau fichier .xlsb en prenant soin de
copier ces procédures dans les bons modules.







Avatar
MichD
Bonjour,


Un exemple de code basé sur un menu d'une version
Excel d'avant 2007.

Si ce menu apparaît dans l'item Complément d'une version
2007 à aujourd'hui, la première ligne de commande doit être
adaptée. Remplace le 1 par le nom que tu as donnée à ta barre
de menu.
Set X = Application.CommandBars(1)


'-----------------------------------------
Sub test()

Dim X As CommandBar
Dim Menu As CommandBarControl
Dim SousMenu As CommandBarControl

Set X = Application.CommandBars(1) 'Son nom "Worksheet Menu Bar"
X.Visible =True

'Création du menu dans la barre de menu
'Before:=9 9 est l'index de l'item précédent où le nouveau menu
'se créera. Si tu n'utilises pas le paramêtre "Before", le nouveau
'menu s'ajoute à l'extrême droite sur la barre des menus
With X
Set Menu = .Controls.Add(Type:=msoControlPopup, Temporary:=True,
before:=9)
With Menu
.Caption = "Patrick"
.Visible = True
End With
End With

'Création des sous-menus,
With Menu
With .Controls.Add(Type:=msoControlButton)
.Caption = "Toto"
.OnAction = "MaMacro"
.FaceId = 3 'L'image du contrôle
End With
With .Controls.Add(Type:=msoControlButton)
.Caption = "titi"
.OnAction = "MaMacro1"
.FaceId = 10
End With
End With

End Sub
'-----------------------------------------
Avatar
Patrick
Ok, mais ça c'est que j'obtenais aussi :)

http://www.cjoint.com/c/FABlKVbhDCH

j'ai à présent (avant de tout effacer bien sur avec deletenouveaumenu)
un menu sous l'autre, et pas à à droite

Mon menu est à cette place mais je voudrais en faire un provisoire qui
se mettrais à la droite de celui là , donc à droite de "Commandes de
menu" visible sur l'image

Est ce possible sans passer par CustomUiEditor comme indique ici ?

http://ericrenaud.fr/Ribbon.htm#personnalisation



Le 27-01-16 12:10, MichD a écrit :

Bonjour,


Un exemple de code basé sur un menu d'une version
Excel d'avant 2007.

Si ce menu apparaît dans l'item Complément d'une version
2007 à aujourd'hui, la première ligne de commande doit être
adaptée. Remplace le 1 par le nom que tu as donnée à ta barre
de menu.
Set X = Application.CommandBars(1)


'-----------------------------------------
Sub test()

Dim X As CommandBar
Dim Menu As CommandBarControl
Dim SousMenu As CommandBarControl

Set X = Application.CommandBars(1) 'Son nom "Worksheet Menu Bar"
X.Visible =True

'Création du menu dans la barre de menu
'Before:=9 9 est l'index de l'item précédent où le nouveau menu
'se créera. Si tu n'utilises pas le paramêtre "Before", le nouveau
'menu s'ajoute à l'extrême droite sur la barre des menus
With X
Set Menu = .Controls.Add(Type:=msoControlPopup, Temporary:=True,
before:=9)
With Menu
.Caption = "Patrick"
.Visible = True
End With
End With

'Création des sous-menus,
With Menu
With .Controls.Add(Type:=msoControlButton)
.Caption = "Toto"
.OnAction = "MaMacro"
.FaceId = 3 'L'image du contrôle
End With
With .Controls.Add(Type:=msoControlButton)
.Caption = "titi"
.OnAction = "MaMacro1"
.FaceId = 10
End With
End With

End Sub
'-----------------------------------------

Avatar
MichD
OK! tu fais référence au ruban.

Désolé pour toi mais je ne réponds pas à ce type de question.
La seule réponse que je donne, c'est l'adresse du site de
Ron de Bruin. Ce site est relativement complet sur le sujet
mais cela demande un certain temps pour comprendre et assimiler
ces explications...

http://www.rondebruin.nl/

Bon travail,

MichD
Avatar
Patrick
Pas de soucis....

Je pensais qu'avec la méthode "classique" telle que tu la donnes et que
j'avais, on pouvait y arriver en modifiant un peu.
Je vais m'arranger autrement parce que assimiler ça en +...déjà que je
maitrise si peu le VBA :)

Merci de ton aide

Patrick


Le 27-01-16 13:55, MichD a écrit :
OK! tu fais référence au ruban.

Désolé pour toi mais je ne réponds pas à ce type de question.
La seule réponse que je donne, c'est l'adresse du site de
Ron de Bruin. Ce site est relativement complet sur le sujet
mais cela demande un certain temps pour comprendre et assimiler
ces explications...

http://www.rondebruin.nl/

Bon travail,

MichD
1 2