Modifier un contrôle

4 mars 2014
Imprimer

Après avoir ajouté un bouton personnalisé, il vous faut également indiquer son étiquette (caption), son image, son état (enfoncé ou relevé), son style, une référence pour le retrouver ensuite et surtout la procédure qui devra s'exécuter lorsque l'on clique dessus. Dans ce cas vous devez lors de la création du contrôle l'affecter à une variable ainsi :

     Dim MaBarre As CommandBar
     Dim NouvBtn As CommandBarButton

     Set MaBarre = CommandBars.Add("BarrePerso") 'ajoute une barre d'outils
     Set NouvBtn = MaBarre.Controls.Add

Maintenant vous pouvez affecter les différentes propriétés que vous voulez :

     With NouvBtn
          .Caption = "Mon bouton"                       'texte affiché sur le bouton
          .FaceId = 59                                      ' n° de l'image
          .OnAction = "Ma_macro"                       ' macro lancé au moment du clic sur le bouton
          .State = msoButtonUp                         ' le bouton est relevé
          .Style = msoButtonIconAndCaptionBelow 'le texte s'affiche sous l'icône
          .Tag = "btn1"                                     'paramètre qui sert à retrouver ensuite le bouton dans le code
          .TooltipText = "ceci est la bulle d'aide"   'texte de la bulle d'aide
     End With

 

Ce qui nous donne cette procédure :

Sub NouvBarre()
     Dim MaBarre As CommandBar
     Dim NouvBtn As CommandBarButton

     Set MaBarre = CommandBars.Add("BarrePerso")
     Set NouvBtn = MaBarre.Controls.Add
     With NouvBtn
          .Caption = "Mon bouton"
          .FaceId = 59
          .OnAction = "Ma_macro"
          .State = msoButtonUp
          .Style = msoButtonIconAndCaptionBelow
          .Tag = "btn1"
          .TooltipText = "ceci est la bulle d'aide"
     End With
     MaBarre.Visible = True 'affiche la barre
End Sub

Sub Ma_macro()
     Dim MonBtn As CommandBarButton

     'ici vous mettez vos instructions
     ' et ces lignes met le bouton dans l'état inverse

     Set MonBtn = CommandBars("BarrePerso").FindControl(, , "btn1") 'le tag nous permet alors de retrouver le bouton, c'est le seul moyen pour un bouton personnalisé
     MonBtn.State = Not MonBtn.State
End Sub

Pour affecter une image à un bouton, vous pouvez :