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

Le
Alex
Bonjour à tous,

Tout d'abord, une bonne année 2014.

Je me permets de vous solliciter car je rencontre un problème sur la cr=
éation d'une barre d'outils personnelisé avec bouton de commande ou app=
arait au lancement de la procédure le message suivant :

Erreur d'excution 5 :
Argument ou Appel de procédure incorrect


Mais je ne comprends pas ce qui génère 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
Alex


Voici ce que j'ai écrit :

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 = Application.CommandBars.Add(Name:="Temps", Position:=ms=
oBarTop, MenuBar:=True, Temporary:=True)
m_barre.Visible = True
Set m_Button1 = m_barre.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 Sub
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #25917252
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
'---------------------------------------------------
MichD
Le #25917242
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
Le #25917322
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
Publicité
Poster une réponse
Anonyme