Créer ma barre d'outil avec VB [RESOLU] - VB/VBA/VBS - Programmation
MarshPosté le 20-06-2006 à 15:11:24
Bonjour, J'ai créé une barre d'outil perso et je dois diffuser ma macro sur pleins de postes dans différents coins du monde...Ma macro est donc constituée de fonctions qui sont accessibles par les boutons de ma barre de menus. Au début j'avais fais un test ds AutoOpen() genre: If toolbar < 1 Then 'je créais ma barre EndIf Et dans AutoClose() si toolbar était >1 je l'effaçais ms ça me posais plein de problème dc je voudrais la créer une bonne fois pour toute ds Normal.dot et si les utilisateurs ne veulent plus la voir, ils n'auront qu'à décocher la case ds Outils/Personnaliser comme par exemple la barre d'outil "Standard". Seulement je sais pas comment faire pour installer ça chez les clients une fois seulement...mettre un bouton qui disparaît ensuite?... ms cmt faire pour que n'arrive qu'une fois? Si vous avez une meilleure idée ou une solution à la mienne: je prends! Merci
' A Placer dans un Module Public Sub CreationBO() Dim BaBar As CommandBar, Btn1, Btn2, Btn3 'Supprime la barre si elle existe déjà On Error Resume Next Application.CommandBars("MaBarre" ).Delete On Error GoTo 0
With BaBar Set Btn1 = .Controls.Add(msoControlButton) With Btn1 .Caption = "1er bouton" .FaceId = 3 .OnAction = "Macro1" End With
Set Btn2 = .Controls.Add(msoControlButton) With Btn2 .Caption = "2eme bouton" .FaceId = 4 .OnAction = "Macro2" End With
Set Btn3 = .Controls.Add(msoControlButton) With Btn3 .Caption = "3eme bouton" .FaceId = 2520 .OnAction = "Macro3" End With .Visible = True End With End Sub
Private Sub Macro1() MsgBox "Bouton 1" End Sub
Private Sub Macro2() MsgBox "Bouton 2" End Sub
Private Sub Macro3() MsgBox "Bouton 3" End Sub
Public Sub DetruireBO() On Error Resume Next Application.CommandBars("MaBarre" ).Delete End Sub
' A placer dans ThisWorkBook Private Sub Workbook_BeforeClose(Cancel As Boolean) DetruireBO End Sub
Private Sub AfficheIconesBoutons() Dim NewBO As CommandBar Dim NewBtn As CommandBarButton Dim i As Long, IcoDepart As Long, IcoFin As Long
On Error Resume Next Application.CommandBars("BarBouton" ).Delete On Error GoTo 0
Set NewBO = Application.CommandBars.Add(Name:="BarBouton", temporary:=True) NewBO.Visible = True
' Plage à choisir suivant la patience de l'utilisateur pour affichage IcoDepart = 1: IcoFin = 210
For i = IcoDepart To IcoFin Set NewBtn = NewBO.Controls.Add(Type:=msoControlButton, ID:=2950) With NewBtn .FaceId = i .Caption = "FaceID = " & i End With Next i
With NewBO .Width = 700 .Left = 50 .Top = 120 End With End Sub
Marsh Posté le 20-06-2006 à 15:11:24
Bonjour,
J'ai créé une barre d'outil perso et je dois diffuser ma macro sur pleins de postes dans différents coins du monde...Ma macro est donc constituée de fonctions qui sont accessibles par les boutons de ma barre de menus.
Au début j'avais fais un test ds AutoOpen() genre:
If toolbar < 1 Then
'je créais ma barre
EndIf
Et dans AutoClose() si toolbar était >1 je l'effaçais ms ça me posais plein de problème dc je voudrais la créer une bonne fois pour toute ds Normal.dot et si les utilisateurs ne veulent plus la voir, ils n'auront qu'à décocher la case ds Outils/Personnaliser comme par exemple la barre d'outil "Standard".
Seulement je sais pas comment faire pour installer ça chez les clients une fois seulement...mettre un bouton qui disparaît ensuite?... ms cmt faire pour que n'arrive qu'une fois?
Si vous avez une meilleure idée ou une solution à la mienne: je prends!
Merci
Message édité par acorsa le 21-06-2006 à 09:03:34