Creation d'une barre d'outils personnalisée avec bouton de commande
3 réponses
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 '---------------------------------------------------
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
'---------------------------------------------------
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 '---------------------------------------------------
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)
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)
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)
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
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
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