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

Creation d'une barre d'outils personnalisée avec bouton de commande

3 réponses
Avatar
Alex
Bonjour =E0 tous,=20

Tout d'abord, une bonne ann=E9e 2014.

Je me permets de vous solliciter car je rencontre un probl=E8me sur la cr=
=E9ation d'une barre d'outils personnelis=E9 avec bouton de commande ou app=
arait au lancement de la proc=E9dure le message suivant :=20

Erreur d'excution 5 :=20
Argument ou Appel de proc=E9dure incorrect


Mais je ne comprends pas ce qui g=E9n=E8re ce message. Faut il que j'ajoute=
une bilbiotheque supplementaire, est ce une erreur de frappe malheureuse.

Merci par avance de votre aide.
Bien cordialement=20
Alex


Voici ce que j'ai =E9crit :

Private Sub Workbook_Open()

Dim m_barre As CommandBar
Dim m_Button1 As CommandBarButton
Dim m_Button2 As CommandBarButton

On Error Resume Next
m_barre.Delete
On Error GoTo 0

Set m_barre =3D Application.CommandBars.Add(Name:=3D"Temps", Position:=3Dms=
oBarTop, MenuBar:=3DTrue, Temporary:=3DTrue)
m_barre.Visible =3D True
Set m_Button1 =3D m_barre.Controls.Add(Type:=3DmsoControlButton)
With m_Button1
.FaceId =3D 14
.Caption =3D "Supprimer une ligne"
.OnAction =3D "Supp_Ligne"
End With

Set m_Button2 =3D m_barre.Controls.Add(Type:=3DmsoControlButton)
With m_Button2
.FaceId =3D 210
.Caption =3D "Trier les fiches par date"
.OnAction =3D "Tri"
End With
End Sub

3 réponses

Avatar
MichD
Bonjour,

Le Hic était cette ligne de code : m_barre.Delete

La barre que tu as créée possède un "NOM" : "TEMPS"
Si tu veux supprimer cette barre de commande si elle existe à
l'ouverture, tu dois l'appeler par son "NOM" : "TEMPS"

Tu n'as aucune barre de commande au nom de : m_barre
d'où l'erreur que tu obtiens.

Ce code fonctionne très bien!

'---------------------------------------------------
Private Sub Workbook_Open()

Dim m_barre As CommandBar
Dim m_Button1 As CommandBarButton
Dim m_Button2 As CommandBarButton

On Error Resume Next
Application.CommandBars("Temps").Delete
On Error GoTo 0

Set m_barre = Application.CommandBars.Add(Name:="Temps", _
Position:=msoBarTop, MenuBar:=True, Temporary:=True)

With m_barre
.Visible = True
Set m_Button1 = .Controls.Add(Type:=msoControlButton)
With m_Button1
.FaceId = 14
.Caption = "Supprimer une ligne"
.OnAction = "Supp_Ligne"
End With

Set m_Button2 = m_barre.Controls.Add(Type:=msoControlButton)
With m_Button2
.FaceId = 210
.Caption = "Trier les fiches par date"
.OnAction = "Tri"
End With
End With
End Sub
'---------------------------------------------------
Avatar
MichD
Un petit complément pour être sûr d'être bien compris...

Ce n'est pas cette ligne de code qui provoque directement l'erreur :
m_barre.Delete

Mais comme cette ligne ne supprime pas la barre "temps" que tu as créée,
lorsque le code tente d'exécuter cette ligne de code, comme la barre existe
déjà
le code affiche le message d'erreur.
Set m_barre = Application.CommandBars.Add(Name:="Temps",
Position:=msoBarTop, MenuBar:=True, Temporary:=True)
Avatar
Alex
Merci beaucoup pour cette réponse, je ne recherchais pas du tout l'erreur à ce niveau là, je m'obstinais sur la ligne où cela bloquait.
Merci pour cette explication.
Cordialement.
Alex