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

Incrémentation nom combobox

T

tao.tix

Guest
Bonjour à tous,

Je dispose dans un userform d'une vingtaine de combobox.
10 d'entres elles s'appellent eqdom1... jusqu'à 10 et les 10 autres eqext1... jusqu'à 10.

Comment faire pour que lorsque j'initialise le formulaire il me fasse une boucle qui balaye toutes les combobox en chargeant les mêmes valeurs et en ne tapant que la commande du genre

eqdom + n° combobox de 1 à 10.AddItem
eqext + n° combobox de 1 à 10.AddItem

Est il possible de faire comme pour les valeurs et de concatenner une variable à un nom d'objet?

Merci de votre aide et bonne soirée
 
W

wally

Guest
Bonsoir tao.tix et le forum,

Essaye ceci :

Private Sub UserForm_Initialize()

For i = 1 To 10
Me.Controls("eqdom" & i).AddItem "MaValeur"
Me.Controls("eqext" & i).AddItem "MaValeur"
Next i

End Sub


Slts

wally
 
@

@+Thierry

Guest
Hello Tao.Tix, Wally

Me est un mot clef utile dans les Private Modules, bien que, d'après l'aide il est surtout utile dans les modules de Classe...

Pour exemple, dans un Private Module de UserForm, en développant, on découvre très vite l'utilité de ce "Me" quand on y adjoint un "."

Immédiatement, un petit menu déroulant contextuel te proposera tous les Controls ActiveX dispo dans ton UserForm...

Disons qu'on pourrait dire que "Me' c'est "Moi" car par exemple l'instruction de Unload peut s'écrire dans le Private Module du UserForm1 :
Unload Me
ou
Unload UserForm1

Sinon une autre méthode que celle de Wally pour boucler sur les Controls sans en Connaitre le nombre :

Private Sub UserForm_Initialize()
Dim CTRL As Control

For Each CTRL In Me.Controls
If Left(CTRL.Name, 5) = "eqdom" Then
CTRL.AddItem "Toto"
ElseIf Left(CTRL.Name, 5) = "eqext" Then
CTRL.AddItem "Zaza"
End If
Next
End Sub


Bonne Soirée
@+Thierry
 

Discussions similaires

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