Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ComboBox dans BO perso

8 réponses
Avatar
Excel...lent
Bonjour la communauté,



J'ai une comboBox dans une feuille avec les 12 mois de l'année.



Dans mon applic j'ai également une BO perso nommée « EMMARGEMENT ».



Je voulais faire en sorte que ma ComboBox ne soit plus dans la feuille mais
dans la BO.



Bon alors ça c'est fait grâce au forum. Il y a quelques temps on m'a donné
ce joli code qui fonctionne à merveille :



Set ComboMois = Application.CommandBars("EMARGEMENT").Controls. _

Add(msoControlComboBox, , , 1)

With ComboMois

.Caption = "Liste des MOIS à afficher"

For i = 1 To [ListMois].Count

.AddItem [ListMois].Item(i)

Next

.Text = .List(1)

.OnAction = "test"

End With



Donc ce code me crée bien la combo avec la liste des 12 mois issue d'une
liste nommée [ListMois].



A l'époque j'avais un peu lâché l'affaire et aujourd'hui je rame un poil, je
m'explique.



*OnAction* me déclenche bien mon code mais je voudrais pouvoir récupérer la
valeur ListIndex de la combo pour que la macro en question s'exécute en
fonction de cette valeur . Avec une combo "normale" je sais faire , mais là
je plante.



Une idée ? Un conseil ?



Désolé d'avoir été un peu long.... :-((



D'avance merci



Cordialement.



Marc

8 réponses

Avatar
anonymousA
Bonjour,

Actioncontrol, actioncontrol, actioncontrol

A+

Bonjour la communauté,



J'ai une comboBox dans une feuille avec les 12 mois de l'année.



Dans mon applic j'ai également une BO perso nommée « EMMARGEMENT ».



Je voulais faire en sorte que ma ComboBox ne soit plus dans la feuille mais
dans la BO.



Bon alors ça c'est fait grâce au forum. Il y a quelques temps on m'a donné
ce joli code qui fonctionne à merveille :



Set ComboMois = Application.CommandBars("EMARGEMENT").Controls. _

Add(msoControlComboBox, , , 1)

With ComboMois

.Caption = "Liste des MOIS à afficher"

For i = 1 To [ListMois].Count

.AddItem [ListMois].Item(i)

Next

.Text = .List(1)

.OnAction = "test"

End With



Donc ce code me crée bien la combo avec la liste des 12 mois issue d'une
liste nommée [ListMois].



A l'époque j'avais un peu lâché l'affaire et aujourd'hui je rame un poil, je
m'explique.



*OnAction* me déclenche bien mon code mais je voudrais pouvoir récupérer la
valeur ListIndex de la combo pour que la macro en question s'exécute en
fonction de cette valeur . Avec une combo "normale" je sais faire , mais là
je plante.



Une idée ? Un conseil ?



Désolé d'avoir été un peu long.... :-((



D'avance merci



Cordialement.



Marc





Avatar
anonymousA
en imaginant que ta barre de commande s'appelle MaBarre et ton control
commandbarcombobox s'appelle MyCtr&l4. dans ce qui suit récupère dans le
Onaction associé la valeur de ce qui est dans le combobox

With Application.CommandBars("MaBarre").Controls("MyCtr&l4")
essai = .list(.ListIndex)
End With

A+

Bonjour,

Actioncontrol, actioncontrol, actioncontrol

A+


Bonjour la communauté,



J'ai une comboBox dans une feuille avec les 12 mois de l'année.



Dans mon applic j'ai également une BO perso nommée « EMMARGEMENT ».



Je voulais faire en sorte que ma ComboBox ne soit plus dans la feuille
mais
dans la BO.



Bon alors ça c'est fait grâce au forum. Il y a quelques temps on m'a
donné
ce joli code qui fonctionne à merveille :



Set ComboMois = Application.CommandBars("EMARGEMENT").Controls. _

Add(msoControlComboBox, , , 1)

With ComboMois

.Caption = "Liste des MOIS à afficher"

For i = 1 To [ListMois].Count

.AddItem [ListMois].Item(i)

Next

.Text = .List(1)

.OnAction = "test"

End With



Donc ce code me crée bien la combo avec la liste des 12 mois issue d'une
liste nommée [ListMois].



A l'époque j'avais un peu lâché l'affaire et aujourd'hui je rame un
poil, je
m'explique.



*OnAction* me déclenche bien mon code mais je voudrais pouvoir
récupérer la
valeur ListIndex de la combo pour que la macro en question s'exécute en
fonction de cette valeur . Avec une combo "normale" je sais faire ,
mais là
je plante.



Une idée ? Un conseil ?



Désolé d'avoir été un peu long.... :-((



D'avance merci



Cordialement.



Marc







Avatar
Excel...lent
Salut anonymousA,

Merci de t'être penché sur mon sort...

J'ai regardé ActionControl dans l'aide VBA et j'y ai trouvé un exemple qui
semble intéressant pour les boutons qui se trouve également dans ma BO.

Ceci étant je ne suis pas certain d'avoir tout compris au code que tu m'a
fournit.

Je l'ai donc mis dans la macro ( Sub test ) que je lance avec la propriété
Onaction de ma combo, mais ça plante.

erreur d'exécution '5' avec en surbrillance cette ligne de ton code :
With Application.CommandBars("EMARGEMENT").Controls("ComboMois")

Peux-tu m'aider et m'expliquer ce que je ne fais pas comme il faut?

Merci.

Cordialement.

Marc
Avatar
anonymousA
Bonjour,

Je pense que tu dois avoir une erreur de désignation soit de la barre de
commandes soit du controle, soit des 2.

Pour le principe , par contre, ce que je t'ai envoyé est valide.
Ci-dessous, un exemple complet

Dim MyBar As CommandBar
Dim MyCtrl4 As CommandBarComboBox

On Error Resume Next

Application.CommandBars("MaBarre").Delete

On Error GoTo 0

Set MyBar = Application.CommandBars.Add(Name:="MaBarre",
Position:=msoBarFloating, Temporary:=True)

Set MyCtrl4 = MyBar.Controls.Add(msoControlComboBox, , , , True)

With MyCtrl4
.Caption = "MyCtr&l4"
.Width = 170
.DropDownLines = 0
.DropDownWidth = -1
For Each c In Range("A2:A20")
.AddItem c.Value
Next
.OnAction = "procMyCtrl4"
End With

End Sub

Sub procMyCtrl4()

MsgBox "c'est la procédure déclenchée par MyCtrl4 "
With Application.CommandBars("MaBarre").Controls("MyCtr&l4")
essai = .List(.ListIndex)
End With
MsgBox essai

End Sub

A+


Salut anonymousA,

Merci de t'être penché sur mon sort...

J'ai regardé ActionControl dans l'aide VBA et j'y ai trouvé un exemple qui
semble intéressant pour les boutons qui se trouve également dans ma BO.

Ceci étant je ne suis pas certain d'avoir tout compris au code que tu m'a
fournit.

Je l'ai donc mis dans la macro ( Sub test ) que je lance avec la propriété
Onaction de ma combo, mais ça plante.

erreur d'exécution '5' avec en surbrillance cette ligne de ton code :
With Application.CommandBars("EMARGEMENT").Controls("ComboMois")

Peux-tu m'aider et m'expliquer ce que je ne fais pas comme il faut?

Merci.

Cordialement.

Marc







Avatar
anonymousA
Ben j'ai bien relu ton POST , et effectivement EMMARGEMENT et
EMARGEMENT sont écrits 2 fois différemment dans ce POST. S'agit-il d'une
erreur de frappe ou d'une réalité ? A toi de voir

A+

Salut anonymousA,

Merci de t'être penché sur mon sort...

J'ai regardé ActionControl dans l'aide VBA et j'y ai trouvé un exemple qui
semble intéressant pour les boutons qui se trouve également dans ma BO.

Ceci étant je ne suis pas certain d'avoir tout compris au code que tu m'a
fournit.

Je l'ai donc mis dans la macro ( Sub test ) que je lance avec la propriété
Onaction de ma combo, mais ça plante.

erreur d'exécution '5' avec en surbrillance cette ligne de ton code :
With Application.CommandBars("EMARGEMENT").Controls("ComboMois")

Peux-tu m'aider et m'expliquer ce que je ne fais pas comme il faut?

Merci.

Cordialement.

Marc







Avatar
michdenis
Tout ce qui suit dans un module Standard :


'-----------------------------
Sub CréerBarreOutils()

Dim MBar As CommandBar
Dim Ct As CommandBarControl

On Error Resume Next
Application.CommandBars("EMARGEMENT").Delete
If Err <> 0 Then Err = 0
Set MBar = Application.CommandBars.Add("EMARGEMENT")

Set Ct = Application.CommandBars("EMARGEMENT").Controls. _
Add(msoControlComboBox, , , 1)
With Ct
.Caption = "Liste des MOIS à afficher"
For i = 1 To 12
.AddItem Format(DateSerial(2006, i, 1), "MMMM")
Next
.Text = .List(1)
.OnAction = "test"
End With

With MBar
.Visible = True
.Enabled = True
'Pour positionner la nouvelle barre d'outils
'à l'extrémité de la barre d'outils Standard(optionnel)
.Position = msoBarTop
.Left = Application.CommandBars("Standard").Width
.RowIndex = Application.CommandBars("Standard").RowIndex
End With

Set Ct = Nothing: Set MBar = Nothing

End Sub

'-----------------------------
Sub test()

Dim LeMois As String
LeMois = Application.CommandBars("EMARGEMENT").Controls(1).Text

'Attention -> sensible à la casse !
Select Case LeMois
Case Is = "janvier"
MsgBox 1 'Action à déclencher selon le mois
Case Is = "février"
MsgBox 2
'.../ etc pour le reste des mois
End Select

End Sub
'-----------------------------














"Excel...lent" a écrit dans le message de news:

Salut anonymousA,

Concernant le nom de la BO c'est une faute de frappe.

Ce que j'ai fait j'ai changé les noms de ma BO et de ma ComboBox comme ceux
qui sont dans ton code et cela plante pareil et à la même ligne, celle là :

With Application.CommandBars("MaBarre").Controls("MyCtrl4")

Par contre j'ai remarqué quelque chose lorsque je saisissais ton code
"procMyCtrl4". Quand je saisis la 3è ligne :

essai = .List(.ListIndex)

quand je tape le point [.] juste avant "List" , VBA ne me propose pas dans
sa liste la fonction "LIST".

Curieux non ?

Pour info j'utilise EXCEL 2000 (9.0.2812) avec VBA 6.3.

Merci de ton aide et ta patience.

Cordialement.

Marc
Avatar
Excel...lent
Salut anonymousA,

Concernant le nom de la BO c'est une faute de frappe.

Ce que j'ai fait j'ai changé les noms de ma BO et de ma ComboBox comme ceux
qui sont dans ton code et cela plante pareil et à la même ligne, celle là :

With Application.CommandBars("MaBarre").Controls("MyCtrl4")

Par contre j'ai remarqué quelque chose lorsque je saisissais ton code
"procMyCtrl4". Quand je saisis la 3è ligne :

essai = .List(.ListIndex)

quand je tape le point [.] juste avant "List" , VBA ne me propose pas dans
sa liste la fonction "LIST".

Curieux non ?

Pour info j'utilise EXCEL 2000 (9.0.2812) avec VBA 6.3.

Merci de ton aide et ta patience.

Cordialement.

Marc
Avatar
Excel...lent
Salut Denis,

Toujours content de te lire.

Bon comment dire, heu.... Ben tu as tapé juste ça fonctionne au poil ( comme
d' habitude oserais-je dire ) !

Merci à toi pour m'avoir un peu beaucoup mâché le boulot.

Amicordialement.

Marc

P.S : Merci beaucoup à toi aussi AnonymousA