L'informatique à votre portée
L'informatique prêt-à-porter

Faites appel à moi pour vos formations
sur les dpts 81, 31, 82, 11 et 67 (Strasbourg)
Confiez moi vos développements Office

FacebookTwitterGoogle BookmarksLinkedin

Modifier un contrôle

4 mars 2014
Imprimer E-mail

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 :

  • copier l'image depuis un autre bouton puis lui coller
    Sub ChangeFace()
         Dim MonBtn As CommandBarButton, BtnCopie As CommandBarButton

         Set BtnCopie = CommandBars("Standard").FindControl(, CommandBars("Standard").Controls("Couper").ID)
         Set MonBtn = CommandBars("BarrePerso").FindControl(, , "btn1")
         BtnCopie.CopyFace    'copie de l'image du bouton
         MonBtn.PasteFace    
    'on colle sur le bouton
    End Sub

  • copier une image de 16x16 situé sur une feuille puis lui coller
    Sub ChangeFace()
         Dim MonBtn As CommandBarButton

         Set MonBtn = CommandBars("BarrePerso").FindControl(, , "btn1")
         ActiveSheet.Shapes(1).Copy 'copie de l'image
         MonBtn.PasteFace              
    'on colle sur le bouton
    End Sub

  • attribuer un numéro d'image prédéfini. L'exemple suivant affiche sur une feuille toutes les images à votre disposition et leur numéro.
    Sub ChangeFace(iNo As Integer, strTag as String)
         Dim MonBtn As CommandBarButton

         Set MonBtn = CommandBars("BarrePerso").FindControl(, , strTag )
         MonBtn.FaceId = iNo
    End Sub

    Sub Essai()
         ChangeFace 1000, "btn1"
    End Sub