Control splitbuttonpopup d'une commande bar (VBA)

Nicze Messages postés 2 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 28 mars 2005 - 27 mars 2005 à 14:38
renega97 Messages postés 1 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 12 décembre 2006 - 12 déc. 2006 à 18:34
Bonjour amis développeurs,

tout d'abord, merci pr ce forum, il m'a déjà bcp aidé pour le
développement de la petite application que je suis en train de faire.
Cependant, là, impossible de trouver la bonne syntaxe pour mon pb.

Je vous explique. Je souhaite créer un bouton dans une barre d'outils du même type que les boutons remplissage ou couleur de police
que l'on trouve communément dans Excel par exemple (bouton en deux
parties : icône + flèche vers le bas sur la droite qui ouvre un popup
en dessous).

J'ai trouvé sur le net que ce bouton était de type msocontrolsplitbuttonpopup.



Dim MyBar As CommandBar

Dim MyPopup As CommandBarPopup



Set MyBar = CommandBars.Add(Name:="BarreTest", _

Position:=msoBarFloating, temporary:=True)



With MyBar

Set MyPopup = .Controls.Add(Type:=msoControlSplitButtonPopup, ID:=1691)

End With



J'ai testé ce petit code et ça marche nickel. Mais, moi je ne
veux pas d'un bouton déjà configuré. Je souhaiterai que lorsqu'on
clique sur la flèche vers le bas, on est trois boutons de définis dans
le volet qui s'affiche.

Donc j'ai essayé de ne pas passer l'ID dans la propriété Add() comme ce
que l'on fait lorsqu'on se définit un bouton personnalisé. Cependant,
ça me provoque une erreur : Argument ou appel de procédure incorrect.



C'est pourquoi j'en appelle à l'aide ! Je ne connais absolument pas la syntaxe à appliquer. Quelqu'un est-il plus au courant que moi ?



Par avance, merci.

Nicze, bidouilleur vb...

4 réponses

jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
27 mars 2005 à 18:56
Je pense que ce code est ce que tu recherches.

Sub CreateBarreMenu()
Dim SubMenuItem As CommandBarButton
Dim MenuItem As CommandBarControl
Dim MyBar As CommandBar
Dim NewMenu As CommandBarPopup
Set MyBar = CommandBars.Add("BarreTest", Position:=msoBarFloating, Temporary:=True)
Set NewMenu = CommandBars("BarreTest").Controls.Add(Type:=msoControlPopup, Temporary:=True)
NewMenu.Caption = "Budget"
Set MenuItem = NewMenu.Controls.Add(Type:=msoControlButton)
With MenuItem
.Caption = "Saisir des données"
.OnAction = "Macro1"
End With
Set MenuItem = NewMenu.Controls.Add(Type:=msoControlButton)
With MenuItem
.Caption = "Valider des données"
.OnAction = "Macro2"
.BeginGroup = True
End With
End Sub

jpleroisse

(Si tu as déjà créés ta BarreTest, tu dois la supprimer avant de lancer la macro, c'est d'ailleurs valable pour chaque modification!)
0
Nicze Messages postés 2 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 28 mars 2005
28 mars 2005 à 11:36
Merci pour cette source, mais ce n'est pas tout à fait ce que je veux... Mais ça peut m'être une alternative !
Je me suis peut-être pas assez bien expliqué. Le control que je cherche à créer et à configurer est un bouton identique à celui de remplissage de couleur de fond sous Excel par exemple, c'est-à-dire que ce bouton est constitué de deux parties.
La partie de gauche, c'est un bouton "classique" qui, quand on clique dessus effectue une action. La partie de droite (une petite flèche vers le bas) permet de choisir une autre action dans un petit panneau qui s'ouvre en dessous du bouton. Ainsi quand on clique à nouveau sur la partie de gauche, le bouton effectue une action différente.

Ce que vous m'avez posté jp, ne permet pas exactement ça... Mais merci pour votre aide !!! Ca me fait au moins une solution alternative élégante si je trouve pas ce que je souhaiterai faire.

Nicze,
bidouilleur un jour, bidouilleur tjs...
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
28 mars 2005 à 22:13
Essaie ce code, en le modifiant tu pourras peut-être arriver à ce que tu veux faire

Sub MakeMonthListe()
Dim TBar As CommandBar
Dim NewDD As CommandBarControl
Dim i As Integer
On Error Resume Next
CommandBars("ListeMois").Delete
On Error GoTo 0
Set TBar = CommandBars.Add
With TBar
.Name = "Liste Mois"
.Visible = True
.Width = 1500
End With
Set NewDD = CommandBars("Liste Mois").Controls.Add(Type:=msoControlDropdown)
With NewDD
.Caption = "DateDD"
.OnAction = "PasteMonth"
.Style = msoButtonAutomatic
For i = 1 To 12
.AddItem Format(DateSerial(1, i, 1), "mmmm")
Next i
.ListIndex = 1
End With
End Sub

Sub PasteMonth()
On Error Resume Next
With CommandBars("liste Mois").Controls("DateDD")
ActiveCell.Value = .List(.ListIndex)
End With
End Sub

jpleroisse
0
renega97 Messages postés 1 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 12 décembre 2006
12 déc. 2006 à 18:34
Bonjour amis développeurs,
tout d'abord, merci pr ce forum, il m'a déjà bcp aidé pour le développement de la petite application que je suis en train de faire. Cependant, là, impossible de trouver la bonne syntaxe pour mon pb.
Je vous explique. Je souhaite créer un bouton dans une barre d'outils du même type que les boutons remplissage ou couleur de police que l'on trouve communément dans Excel par exemple (bouton en deux parties : icône + flèche vers le bas sur la droite qui ouvre un popup en dessous).
J'ai trouvé sur le net que ce bouton était de type msocontrolsplitbuttonpopup.

Dim MyBar As CommandBar
Dim MyPopup As CommandBarPopup

Set MyBar = CommandBars.Add(Name:="BarreTest", _
Position:=msoBarFloating, temporary:=True)

With MyBar
Set MyPopup = .Controls.Add(Type:=msoControlSplitButtonPopup, ID:=1691)
End With

J'ai testé ce petit code et ça marche nickel. Mais, moi je ne veux pas d'un bouton déjà configuré. Je souhaiterai que lorsqu'on clique sur la flèche vers le bas, on est trois boutons de définis dans le volet qui s'affiche.
Donc j'ai essayé de ne pas passer l'ID dans la propriété Add() comme ce que l'on fait lorsqu'on se définit un bouton personnalisé. Cependant, ça me provoque une erreur : Argument ou appel de procédure incorrect.

C'est pourquoi j'en appelle à l'aide ! Je ne connais absolument pas la syntaxe à appliquer. Quelqu'un est-il plus au courant que moi ?
0
Rejoignez-nous