Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

macro barre d'outils

gh4

XLDnaute Occasionnel
bonjour
j'aimerais m'essayer a la creation de barre d'outils par macro
je ne trouve nul par ou je pourrais suivant cette macro
rajoute un menu titre"mon menu" avec a l'interieur pour l'exemple une ligne "mon choix" je que pourrais recopié pour d'autre ligne

Voici une barre d'outils avec 5 boutons


Option Explicit

Private Sub Workbook_Activate()
Application.CommandBars("BO").Visible = True
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.CommandBars("BO").Delete
End Sub

Private Sub Workbook_Deactivate()
On Error Resume Next
Application.CommandBars("BO").Visible = False
End Sub

Private Sub Workbook_Open()
Dim BO As CommandBar
Dim Bouton1 As Object, Bouton2 As Object, Bouton3 As Object, Bouton4 As Object, Bouton5 As Object ' selectionne le nbr de bouton de la barre

On Error Resume Next
Set BO = Application.CommandBars.Add("BO")
BO.Position = msoBarFloating
BO.Protection = msoBarNoChangeVisible
With BO
Set Bouton1 = .Controls.Add(msoControlButton)
With Bouton1
.Caption = "Affichage BO en haut" 'affichage quand souris passe dessus
.FaceId = 134 'dessin sur le bouton
.OnAction = "Haut" 'lance la macro
End With

Set Bouton2 = .Controls.Add(msoControlButton)
With Bouton2
.Caption = "Affichage BO à droite"
.FaceId = 133
.OnAction = "Droite"
End With

Set Bouton3 = .Controls.Add(msoControlButton)
With Bouton3
.Caption = "Affichage BO en bas"
.FaceId = 135
.OnAction = "Bas"
End With

Set Bouton4 = .Controls.Add(msoControlButton)
With Bouton4
.Caption = "Affichage BO à gauche"
.FaceId = 132
.OnAction = "Gauche"
End With


Set Bouton5 = .Controls.Add(msoControlButton)
With Bouton5
.Caption = "Supprimer"
.FaceId = 2309
.OnAction = "Fermer"
End With

.Visible = True
End With

End Sub
 

Creepy

XLDnaute Accro
Re : macro barre d'outils

Bonjour le Forum, Gh4,

Désolé j'ai rien compris ...

Par contre à la première lecture de ton code quelques remarques :

Declare tes bouton autrement qu'en objet ce sera plus propre par exemple :

Dim Btn_Nom As CommandBarButton
Dim Cbx_Nom As CommandBarComboBox

Ici :
Code:
BO.Position = msoBarFloating
BO.Protection = msoBarNoChangeVisible
With BO

Pourquoi ne pas encapsuler les deux premières lignes dans le With ?

Le on error resume next arghh pas beau !

Pour tes boutons qui appellent une fonction perso, met la valeur builtin a False.

Tag tes boutons comme ceci par exemple : .Tag = "MonBtn1" C'est la seule facon de pouvoir retrouver ton bouton par la suite et de pouvoir agir dessus comme ceci : Set MonBtn = CommandBars("MaBarre").FindControl(, , "btn1").
Donne à tes tags des noms explicites.

Ajoutes l'option : Temporary:=True dans la création de ta barre pour indiquer à Excel qu'elle sera détruite à la fermeture d'Excel qu'elle n'est pas permanente.

Voila quelques conseils, bon courage.

Creepy
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…