OVH Cloud OVH Cloud

Macro affecté sur des Item d?un control DropDown

5 réponses
Avatar
Saulot
Bonjour,
Est ce possible d'affecter une macro differente à chacun des Items d'un
Control DropDown ?

Tant que j'y suis, un autre truc bizarre, je fais DBControl.caption= "test"
et il ne m'affiche pas la chaine de caractere sur le bouton ! (DBControl est
un bouton donc ^^)

Merci de votre aide.
***********************
'Syntaxe pour les ComboBox
Set DBControl = DBManager.Controls.Add(msoControlDropdown, , , , False)
With DBControl
.TooltipText = "Ceci est une ListBox Non modifiable" 'Description du
Control
.Width = 100 'Largeur du control
.Visible = True
End With

'Ajout des items
DBControl.AddItem ("Test1")
DBControl.AddItem ("Test2")
DBControl.AddItem ("Test3")

5 réponses

Avatar
Benead
Bonjour Saulot

Est ce possible d'affecter une macro differente à chacun des Items d'un
Control DropDown ?


Oui via Application.Run en récupérant le nom de la macro à lancer :
Dans le module de l'UF :

Private Sub DBControl_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If DBControl.ListIndex > -1 Then Application.Run DBControl.Text
End Sub

Dans un module standard :

Sub Test1()
MsgBox "Macro Test1"
End Sub
Sub Test2()
MsgBox "Macro Test2"
End Sub
Sub Test3()
MsgBox "Macro Test3"
End Sub

Dans mon exemple je récupère le texte de l'item pour lancer la macro qui porte le même nom, mais tu peux également utiliser un contrôle avec 2
colonnes ; dans la première colonne tu mets un texte descriptif de la macro à lancer et dans la seconde colonne (masquée ou non) le nom de la sub à
lancer.


Tant que j'y suis, un autre truc bizarre, je fais DBControl.caption= "test"
et il ne m'affiche pas la chaine de caractere sur le bouton ! (DBControl est
un bouton donc ^^)


Vérifie la propriété ForeColor du contrôle

A+
Benead
Bretagne
Xl97

Saulot a écrit:
Bonjour,
Est ce possible d'affecter une macro differente à chacun des Items d'un
Control DropDown ?

Tant que j'y suis, un autre truc bizarre, je fais DBControl.caption= "test"
et il ne m'affiche pas la chaine de caractere sur le bouton ! (DBControl est
un bouton donc ^^)

Merci de votre aide.
***********************
'Syntaxe pour les ComboBox
Set DBControl = DBManager.Controls.Add(msoControlDropdown, , , , False)
With DBControl
.TooltipText = "Ceci est une ListBox Non modifiable" 'Description du
Control
.Width = 100 'Largeur du control
.Visible = True
End With

'Ajout des items
DBControl.AddItem ("Test1")
DBControl.AddItem ("Test2")
DBControl.AddItem ("Test3")




Avatar
Saulot
Merci de tout ca, je regarde ^^
"Benead" a écrit dans le message de
news:
Bonjour Saulot

Est ce possible d'affecter une macro differente à chacun des Items d'un
Control DropDown ?


Oui via Application.Run en récupérant le nom de la macro à lancer :
Dans le module de l'UF :

Private Sub DBControl_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If DBControl.ListIndex > -1 Then Application.Run DBControl.Text
End Sub

Dans un module standard :

Sub Test1()
MsgBox "Macro Test1"
End Sub
Sub Test2()
MsgBox "Macro Test2"
End Sub
Sub Test3()
MsgBox "Macro Test3"
End Sub

Dans mon exemple je récupère le texte de l'item pour lancer la macro qui
porte le même nom, mais tu peux également utiliser un contrôle avec 2

colonnes ; dans la première colonne tu mets un texte descriptif de la
macro à lancer et dans la seconde colonne (masquée ou non) le nom de la sub

à
lancer.


Tant que j'y suis, un autre truc bizarre, je fais DBControl.caption "test"
et il ne m'affiche pas la chaine de caractere sur le bouton !
(DBControl est


un bouton donc ^^)


Vérifie la propriété ForeColor du contrôle

A+
Benead
Bretagne
Xl97

Saulot a écrit:
Bonjour,
Est ce possible d'affecter une macro differente à chacun des Items d'un
Control DropDown ?

Tant que j'y suis, un autre truc bizarre, je fais DBControl.caption "test"
et il ne m'affiche pas la chaine de caractere sur le bouton ! (DBControl
est


un bouton donc ^^)

Merci de votre aide.
***********************
'Syntaxe pour les ComboBox
Set DBControl = DBManager.Controls.Add(msoControlDropdown, , , , False)
With DBControl
.TooltipText = "Ceci est une ListBox Non modifiable" 'Description du
Control
.Width = 100 'Largeur du control
.Visible = True
End With

'Ajout des items
DBControl.AddItem ("Test1")
DBControl.AddItem ("Test2")
DBControl.AddItem ("Test3")








Avatar
Saulot
Alors 2 questions betes :
1. Le Forecolor, ou est-il ???

Set DBControl = DBManager.Controls.Add(msoControlButton, , , , False)
With DBControl
.Caption = "Nom du Control" 'Affichage sur le control
.TooltipText = "Ceci est un bouton" 'Description du Control
.Width = 50 'Largeur du control
.OnAction = "Test" 'Le Nom de la Macro (Ds un Module)
.Visible = True
End With

Avec ce code, impossible de le trouver.

2. Comment faire pour créer une DropDown avec 2 colonnes ?

Merci de ton aide :)
"Benead" a écrit dans le message de
news:
Bonjour Saulot

Est ce possible d'affecter une macro differente à chacun des Items d'un
Control DropDown ?


Oui via Application.Run en récupérant le nom de la macro à lancer :
Dans le module de l'UF :

Private Sub DBControl_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If DBControl.ListIndex > -1 Then Application.Run DBControl.Text
End Sub

Dans un module standard :

Sub Test1()
MsgBox "Macro Test1"
End Sub
Sub Test2()
MsgBox "Macro Test2"
End Sub
Sub Test3()
MsgBox "Macro Test3"
End Sub

Dans mon exemple je récupère le texte de l'item pour lancer la macro qui
porte le même nom, mais tu peux également utiliser un contrôle avec 2

colonnes ; dans la première colonne tu mets un texte descriptif de la
macro à lancer et dans la seconde colonne (masquée ou non) le nom de la sub

à
lancer.


Tant que j'y suis, un autre truc bizarre, je fais DBControl.caption "test"
et il ne m'affiche pas la chaine de caractere sur le bouton !
(DBControl est


un bouton donc ^^)


Vérifie la propriété ForeColor du contrôle

A+
Benead
Bretagne
Xl97

Saulot a écrit:
Bonjour,
Est ce possible d'affecter une macro differente à chacun des Items d'un
Control DropDown ?

Tant que j'y suis, un autre truc bizarre, je fais DBControl.caption "test"
et il ne m'affiche pas la chaine de caractere sur le bouton ! (DBControl
est


un bouton donc ^^)

Merci de votre aide.
***********************
'Syntaxe pour les ComboBox
Set DBControl = DBManager.Controls.Add(msoControlDropdown, , , , False)
With DBControl
.TooltipText = "Ceci est une ListBox Non modifiable" 'Description du
Control
.Width = 100 'Largeur du control
.Visible = True
End With

'Ajout des items
DBControl.AddItem ("Test1")
DBControl.AddItem ("Test2")
DBControl.AddItem ("Test3")








Avatar
Saulot
Mea culpa pour le forecolor.

Control.Style = msoButtonCaption

"Benead" a écrit dans le message de
news:
Bonjour Saulot

Est ce possible d'affecter une macro differente à chacun des Items d'un
Control DropDown ?


Oui via Application.Run en récupérant le nom de la macro à lancer :
Dans le module de l'UF :

Private Sub DBControl_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If DBControl.ListIndex > -1 Then Application.Run DBControl.Text
End Sub

Dans un module standard :

Sub Test1()
MsgBox "Macro Test1"
End Sub
Sub Test2()
MsgBox "Macro Test2"
End Sub
Sub Test3()
MsgBox "Macro Test3"
End Sub

Dans mon exemple je récupère le texte de l'item pour lancer la macro qui
porte le même nom, mais tu peux également utiliser un contrôle avec 2

colonnes ; dans la première colonne tu mets un texte descriptif de la
macro à lancer et dans la seconde colonne (masquée ou non) le nom de la sub

à
lancer.


Tant que j'y suis, un autre truc bizarre, je fais DBControl.caption "test"
et il ne m'affiche pas la chaine de caractere sur le bouton !
(DBControl est


un bouton donc ^^)


Vérifie la propriété ForeColor du contrôle

A+
Benead
Bretagne
Xl97

Saulot a écrit:
Bonjour,
Est ce possible d'affecter une macro differente à chacun des Items d'un
Control DropDown ?

Tant que j'y suis, un autre truc bizarre, je fais DBControl.caption "test"
et il ne m'affiche pas la chaine de caractere sur le bouton ! (DBControl
est


un bouton donc ^^)

Merci de votre aide.
***********************
'Syntaxe pour les ComboBox
Set DBControl = DBManager.Controls.Add(msoControlDropdown, , , , False)
With DBControl
.TooltipText = "Ceci est une ListBox Non modifiable" 'Description du
Control
.Width = 100 'Largeur du control
.Visible = True
End With

'Ajout des items
DBControl.AddItem ("Test1")
DBControl.AddItem ("Test2")
DBControl.AddItem ("Test3")








Avatar
Benead
Salut Saulot,

Tout d'abord je tiens à te préciser que je suis sous XL97, donc il se peut que je réponde à coté.


Pour créer un ComboBox ou ListBox à deux colonnes ou plus, 3 solutions s'offrent à toi.
La première est de rentrer les valeurs dans un tableau puis de copier le tableau dans la propriété List du contrôle
La seconde est de charger les items un par un
La troisième est d'utiliser la propriété RowSource si les données se trouvent sur une feuille de calcul (non expliqué dans l'exemple suivant, voir
l'aide Excel.



Pour recréer l'exemple, qui suit il te faut :
1 Userform
1 ComboBox
1 ListBox
1 CommandButton
Tous doivent porté le nom défini par VBE terminé par 1 (ListBox1....)
Tous les ListBox et ComboBox ont 10 colonnes (0 à 9 même avec Option Base 1), mais attention, car ils ne peuvent avoir plus. Le bouton CommandButton1
permet simplement de basculer le nombre de colonnes visibles (1 ou 2).
Je me suis arrêté au lancement de la macro de mars, le principe étant le même pour tout les items.

' ****** Dans le module de l'UserForm ***********
Option Explicit

Private Sub ComboBox1_Change()
If ComboBox1.ListIndex > -1 And ComboBox1.ListIndex < 3 Then Application.Run ComboBox1.Value

End Sub

Private Sub CommandButton1_Click()
' Affichage d 'une ou 2 colonnes
Select Case ComboBox1.ColumnCount
Case 1
ComboBox1.ColumnCount = 2
ListBox1.ColumnCount = 2
Case Else
ComboBox1.ColumnCount = 1
ListBox1.ColumnCount = 1
End Select
End Sub

Private Sub UserForm_Initialize()
Dim n As Byte, TabDate(0 To 11, 2)

' Remplissage d'un tableau qui va charger le LisBox
For n = 0 To 11
TabDate(n, 0) = Format(n + 1 & "/2004", "mmmm")
TabDate(n, 1) = Format(n + 1 & "/2004", "mmm")
Next n
ListBox1.ColumnCount = 2 ' ListBox à 2 Colonnes visibles
ComboBox1.ColumnCount = 2 ' ComboBox à 2 Colonnes visibles
ListBox1.List = TabDate

' Remplissage Du ComboBox item par item
For n = 0 To 11
ComboBox1.AddItem
ComboBox1.List(n, 0) = Format(n + 1 & "/2004", "mmmm")
ComboBox1.List(n, 1) = Format(n + 1 & "/2004", "mmm")
Next
ComboBox1.BoundColumn = 2 ' Affecte la valeur de la colonne 2 a la propriété Value du contrôle

End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If ListBox1.ListIndex > -1 And ListBox1.ListIndex < 3 Then Application.Run ListBox1.List(ListBox1.ListIndex, 1)
End Sub
' ****** Dans un module standard ****************
Option Explicit

Sub Janv()
MsgBox "Macro Janv"
End Sub

Sub Févr()
MsgBox "Macro Févr"
End Sub

Sub Mars()
MsgBox "Macro Mars"
End Sub
' ***********************************************

Regarde bien le code et si tu as des questions, reviens nous voir (Dans le même fil, bien sûr).

A+
--
Benead
Bretagne

Xl97

Saulot a écrit:
Alors 2 questions betes :
1. Le Forecolor, ou est-il ???

Set DBControl = DBManager.Controls.Add(msoControlButton, , , , False)
With DBControl
.Caption = "Nom du Control" 'Affichage sur le control
.TooltipText = "Ceci est un bouton" 'Description du Control
.Width = 50 'Largeur du control
.OnAction = "Test" 'Le Nom de la Macro (Ds un Module)
.Visible = True
End With

Avec ce code, impossible de le trouver.

2. Comment faire pour créer une DropDown avec 2 colonnes ?

Merci de ton aide :)
"Benead" a écrit dans le message de
news:

Bonjour Saulot

Est ce possible d'affecter une macro differente à chacun des Items d'un
Control DropDown ?


Oui via Application.Run en récupérant le nom de la macro à lancer :
Dans le module de l'UF :

Private Sub DBControl_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If DBControl.ListIndex > -1 Then Application.Run DBControl.Text
End Sub

Dans un module standard :

Sub Test1()
MsgBox "Macro Test1"
End Sub
Sub Test2()
MsgBox "Macro Test2"
End Sub
Sub Test3()
MsgBox "Macro Test3"
End Sub

Dans mon exemple je récupère le texte de l'item pour lancer la macro qui


porte le même nom, mais tu peux également utiliser un contrôle avec 2

colonnes ; dans la première colonne tu mets un texte descriptif de la


macro à lancer et dans la seconde colonne (masquée ou non) le nom de la sub
à

lancer.


Tant que j'y suis, un autre truc bizarre, je fais DBControl.caption >
"test"



et il ne m'affiche pas la chaine de caractere sur le bouton !



(DBControl est

un bouton donc ^^)


Vérifie la propriété ForeColor du contrôle

A+
Benead
Bretagne
Xl97

Saulot a écrit:

Bonjour,
Est ce possible d'affecter une macro differente à chacun des Items d'un
Control DropDown ?

Tant que j'y suis, un autre truc bizarre, je fais DBControl.caption >>
"test"



et il ne m'affiche pas la chaine de caractere sur le bouton ! (DBControl


est


un bouton donc ^^)

Merci de votre aide.
***********************
'Syntaxe pour les ComboBox
Set DBControl = DBManager.Controls.Add(msoControlDropdown, , , , False)
With DBControl
.TooltipText = "Ceci est une ListBox Non modifiable" 'Description du
Control
.Width = 100 'Largeur du control
.Visible = True
End With

'Ajout des items
DBControl.AddItem ("Test1")
DBControl.AddItem ("Test2")
DBControl.AddItem ("Test3")