bouton barre standard

copayo

XLDnaute Occasionnel
Bonjour à tous,

j'aimerai créer un bouton dans ma barre standard qui ne se crée qu'1 fois. Mon pb c que j'arrive pas à l'effacer à la fermeture du fichier et ca m'en créé un a chque ouverture d'excel !!

J'ai creer la macro avec workbook open :

Sub creationiconeimpression()
Dim Iconeimpression As CommandBarControl
Set Iconeimpression = CommandBars('standard').Controls.Add(Type:=msoControlButton, before:=6)
With Iconeimpression
.Caption = 'My impression'
.FaceId = 160
.Style = msoButtonIconAndCaption
.OnAction = 'tutu'
End With
End Sub

et j'essaye de l'effacer avec ce code dans workbook beforeclose mais sans succés :

Application.CommandBars('Standard').Controls('My Impression').Delete

Auriez vous une idée ??

merci par avance
 

myDearFriend!

XLDnaute Barbatruc
Bonjour copayo,

Tu devrais pouvoir faire comme ça :
Sub creationiconeimpression()
Dim Iconeimpression As CommandBarButton
      Set Iconeimpression = Application.CommandBars('Standard').Controls.Add _
            (Type:=msoControlButton, before:=6, Temporary:=True)
      With Iconeimpression
            .Caption = 'My impression'
            .FaceId = 160
            .Style = msoButtonIconAndCaption
            .OnAction = 'tutu'
      End With
End Sub
Et toujours :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
      Application.CommandBars('Standard').Controls('My Impression').Delete
End Sub
Cordialement,
 

myDearFriend!

XLDnaute Barbatruc
Re copayo,

A vrai dire je n'ai pas testé ton code et à première vue, je suis même surpris que tu indiques qu'il ne fonctionnait pas...

Les seules modifications que je t'ai proposées concernent :[ol][ul][li]la déclaration de IconeImpression en CommandBarButton (au lieu de CommandBarControl) : normalement, ça ne joue en rien dans le fonctionnement, mais il est toujours préférable de déclarer un contrôle en fonction de sa nature exacte. La démarche est un peu semblable lorsque tu t'obliges à déclarer un objet bouton de USF 'as CommandButton' en lieu et place de 'as Control'...[/li]
[li]l'ajout de l'argument 'Temporary:=True' : créé en tant que contrôle temporaire, ton bouton sera automatiquement supprimé lors de la fermeture d'Excel. Cela n'empêche aucunement de prévoir un code qui supprimera ce bouton à la fermeture du seul classeur (comme tu l'avais fait d'ailleurs).[/li][/ul][/ol]
Cela dit, si tu veux être sûr que ton bouton ne va pas se créer en plusieurs exemplaires à chaque fois que tu lanceras ton classeur, je te conseillerais de faire comme ci-dessous :
Private Sub Workbook_Open()
Dim Iconeimpression As CommandBarButton
      On Error Resume Next
      Set Iconeimpression = Application.CommandBars('Standard').Controls('My Impression')
      'Creer un nouveau bouton IconeImpression seulement s'il n'existe pas déjà !
      If Iconeimpression Is Nothing Then
            Set Iconeimpression = Application.CommandBars('standard').Controls.Add _
                  (Type:=msoControlButton, before:=6, Temporary:=True)
            With Iconeimpression
                  .Caption = 'My impression'
                  .FaceId = 160
                  .Style = msoButtonIconAndCaption
                  .OnAction = 'tutu'
            End With
      End If
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
      On Error Resume Next
      Application.CommandBars('Standard').Controls('My Impression').Delete
End Sub
Cordialement,

PS : en ce qui concerne le mDF calendrier, à mon tour de te remercier pour le compliment... :)
 

Discussions similaires

Statistiques des forums

Discussions
312 334
Messages
2 087 384
Membres
103 530
dernier inscrit
dieubrice