OVH Cloud OVH Cloud

nom de combobox

4 réponses
Avatar
fdess
Bonjour à tous,
Je n'arrive pas à faire une boucle FOR sur des combobox nommées :
bxMq1,bxMq2,bxMq3,bxMq4.
Je dois à l'ouverture de mon programme rentrer 4 mots dans les listes
déroulantes me permettant ensuite de trier des données.

Voici ce que je fais actuellement :
Set bxMq = bxMq1
Set bxModele = bxModele1
bxMq.AddItem "EUPEC"
bxMq.AddItem "SEMIKRON"
bxMq.AddItem "FUJI"
bxMq.AddItem "IXYS"
bxModele.Clear
bxModele.AddItem ("Modèle")
'
'point 2
Set bxMq = bxMq2
Set bxModele = bxModele2
bxMq.AddItem "EUPEC"
bxMq.AddItem "SEMIKRON"
bxMq.AddItem "FUJI"
bxMq.AddItem "IXYS"
bxModele.Clear
bxModele.AddItem ("Modèle")
'
'point 3
=> MEME CHOSE
'point 4
=>MEME CHOSE
End If
End Sub
Cela fait beaucoup de lignes de code pour pas grand chose,
J'ai donc essayé de condenser de la façon suivante :

Dim cpt As Integer
Dim bxMq As ComboBox
For cpt = 1 To 4
chaine = "bxMq" & cpt
Set bxMq = chaine
Set bxModele = "bxModele" & cpt
bxMq.AddItem "EUPEC"
bxMq.AddItem "SEMIKRON"
bxMq.AddItem "FUJI"
bxMq.AddItem "IXYS"
bxModele.Clear
bxModele.AddItem ("Modèle")
Next cpt

Mais le message d'erreur me disant que "chaine" n'est pas une combobox
s'affiche!

Quelqu'un a-t-il une idée?

FDESS

4 réponses

Avatar
Daniel
Bonjour.
Exemple pour un userform, à adapter pour une feuile :

Dim ctrl As Control
For Each ctrl In Userform1.Controls
If Left(ctrl.Name, 4) = "bxMq" Then
ctrl.AddItem "EUPEC"
ctrl.AddItem "SEMIKRON"
ctrl.AddItem "FUJI"
ctrl.AddItem "IXYS"
End If
Next ctrl

Cordialement.
Daniel
"fdess" a écrit dans le message de news:
OKjxCBR$
Bonjour à tous,
Je n'arrive pas à faire une boucle FOR sur des combobox nommées :
bxMq1,bxMq2,bxMq3,bxMq4.
Je dois à l'ouverture de mon programme rentrer 4 mots dans les listes
déroulantes me permettant ensuite de trier des données.

Voici ce que je fais actuellement :
Set bxMq = bxMq1
Set bxModele = bxModele1
bxMq.AddItem "EUPEC"
bxMq.AddItem "SEMIKRON"
bxMq.AddItem "FUJI"
bxMq.AddItem "IXYS"
bxModele.Clear
bxModele.AddItem ("Modèle")
'
'point 2
Set bxMq = bxMq2
Set bxModele = bxModele2
bxMq.AddItem "EUPEC"
bxMq.AddItem "SEMIKRON"
bxMq.AddItem "FUJI"
bxMq.AddItem "IXYS"
bxModele.Clear
bxModele.AddItem ("Modèle")
'
'point 3
=> MEME CHOSE
'point 4
=>MEME CHOSE
End If
End Sub
Cela fait beaucoup de lignes de code pour pas grand chose,
J'ai donc essayé de condenser de la façon suivante :

Dim cpt As Integer
Dim bxMq As ComboBox
For cpt = 1 To 4
chaine = "bxMq" & cpt
Set bxMq = chaine
Set bxModele = "bxModele" & cpt
bxMq.AddItem "EUPEC"
bxMq.AddItem "SEMIKRON"
bxMq.AddItem "FUJI"
bxMq.AddItem "IXYS"
bxModele.Clear
bxModele.AddItem ("Modèle")
Next cpt

Mais le message d'erreur me disant que "chaine" n'est pas une combobox
s'affiche!

Quelqu'un a-t-il une idée?

FDESS



Avatar
JB
Bonsoir,

For i=1 to 4
Me("bxMq" &i).AddItem "EUPEC"
Me("bxMq" &i).AddItem "SEMIKRON"
Next i

ou

For i=1 to 4
Me.Controls("bxMq" &i).AddItem "EUPEC"
Me.Controls("bxMq" &i).AddItem "SEMIKRON"
Next i


Cordialement JB

Bonjour à tous,
Je n'arrive pas à faire une boucle FOR sur des combobox nommées :
bxMq1,bxMq2,bxMq3,bxMq4.
Je dois à l'ouverture de mon programme rentrer 4 mots dans les listes
déroulantes me permettant ensuite de trier des données.

Voici ce que je fais actuellement :
Set bxMq = bxMq1
Set bxModele = bxModele1
bxMq.AddItem "EUPEC"
bxMq.AddItem "SEMIKRON"
bxMq.AddItem "FUJI"
bxMq.AddItem "IXYS"
bxModele.Clear
bxModele.AddItem ("Modèle")
'
'point 2
Set bxMq = bxMq2
Set bxModele = bxModele2
bxMq.AddItem "EUPEC"
bxMq.AddItem "SEMIKRON"
bxMq.AddItem "FUJI"
bxMq.AddItem "IXYS"
bxModele.Clear
bxModele.AddItem ("Modèle")
'
'point 3
=> MEME CHOSE
'point 4
=>MEME CHOSE
End If
End Sub
Cela fait beaucoup de lignes de code pour pas grand chose,
J'ai donc essayé de condenser de la façon suivante :

Dim cpt As Integer
Dim bxMq As ComboBox
For cpt = 1 To 4
chaine = "bxMq" & cpt
Set bxMq = chaine
Set bxModele = "bxModele" & cpt
bxMq.AddItem "EUPEC"
bxMq.AddItem "SEMIKRON"
bxMq.AddItem "FUJI"
bxMq.AddItem "IXYS"
bxModele.Clear
bxModele.AddItem ("Modèle")
Next cpt

Mais le message d'erreur me disant que "chaine" n'est pas une combobox
s'affiche!

Quelqu'un a-t-il une idée?

FDESS


Avatar
fdess
Merci JB pour ton astuce mais ça ne marche pas,
Le problème vient que sans le mot clef "Controls" VBA me demande de
spécifier

Cet objet ne gère pas cette propriété ou méthode (erreur 438)

et avec le mot clef "Controls" VBA me dit
Méthode ou membre de données introuvable (erreur 461)
Pourtant mes combobox apparaissent bien sous les noms bxMq1,etc dans le
debogueur, il m'est impossible d'y accedermêmes en passant par une variable
declaré en variant.
Encore merci d'y avoir reflechi

"JB" a écrit dans le message de news:

Bonsoir,

For i=1 to 4
Me("bxMq" &i).AddItem "EUPEC"
Me("bxMq" &i).AddItem "SEMIKRON"
Next i

ou

For i=1 to 4
Me.Controls("bxMq" &i).AddItem "EUPEC"
Me.Controls("bxMq" &i).AddItem "SEMIKRON"
Next i


Cordialement JB

Bonjour à tous,
Je n'arrive pas à faire une boucle FOR sur des combobox nommées :
bxMq1,bxMq2,bxMq3,bxMq4.
Je dois à l'ouverture de mon programme rentrer 4 mots dans les listes
déroulantes me permettant ensuite de trier des données.

Voici ce que je fais actuellement :
Set bxMq = bxMq1
Set bxModele = bxModele1
bxMq.AddItem "EUPEC"
bxMq.AddItem "SEMIKRON"
bxMq.AddItem "FUJI"
bxMq.AddItem "IXYS"
bxModele.Clear
bxModele.AddItem ("Modèle")
'
'point 2
Set bxMq = bxMq2
Set bxModele = bxModele2
bxMq.AddItem "EUPEC"
bxMq.AddItem "SEMIKRON"
bxMq.AddItem "FUJI"
bxMq.AddItem "IXYS"
bxModele.Clear
bxModele.AddItem ("Modèle")
'
'point 3
=> MEME CHOSE
'point 4
=>MEME CHOSE
End If
End Sub
Cela fait beaucoup de lignes de code pour pas grand chose,
J'ai donc essayé de condenser de la façon suivante :

Dim cpt As Integer
Dim bxMq As ComboBox
For cpt = 1 To 4
chaine = "bxMq" & cpt
Set bxMq = chaine
Set bxModele = "bxModele" & cpt
bxMq.AddItem "EUPEC"
bxMq.AddItem "SEMIKRON"
bxMq.AddItem "FUJI"
bxMq.AddItem "IXYS"
bxModele.Clear
bxModele.AddItem ("Modèle")
Next cpt

Mais le message d'erreur me disant que "chaine" n'est pas une combobox
s'affiche!

Quelqu'un a-t-il une idée?

FDESS


Avatar
JB
Voir PJ:

http://cjoint.com/?lcvpEuEIiX

JB


Merci JB pour ton astuce mais ça ne marche pas,
Le problème vient que sans le mot clef "Controls" VBA me demande de
spécifier

Cet objet ne gère pas cette propriété ou méthode (erreur 438)

et avec le mot clef "Controls" VBA me dit
Méthode ou membre de données introuvable (erreur 461)
Pourtant mes combobox apparaissent bien sous les noms bxMq1,etc dans le
debogueur, il m'est impossible d'y accedermêmes en passant par une vari able
declaré en variant.
Encore merci d'y avoir reflechi

"JB" a écrit dans le message de news:

Bonsoir,

For i=1 to 4
Me("bxMq" &i).AddItem "EUPEC"
Me("bxMq" &i).AddItem "SEMIKRON"
Next i

ou

For i=1 to 4
Me.Controls("bxMq" &i).AddItem "EUPEC"
Me.Controls("bxMq" &i).AddItem "SEMIKRON"
Next i


Cordialement JB

Bonjour à tous,
Je n'arrive pas à faire une boucle FOR sur des combobox nommées :
bxMq1,bxMq2,bxMq3,bxMq4.
Je dois à l'ouverture de mon programme rentrer 4 mots dans les listes
déroulantes me permettant ensuite de trier des données.

Voici ce que je fais actuellement :
Set bxMq = bxMq1
Set bxModele = bxModele1
bxMq.AddItem "EUPEC"
bxMq.AddItem "SEMIKRON"
bxMq.AddItem "FUJI"
bxMq.AddItem "IXYS"
bxModele.Clear
bxModele.AddItem ("Modèle")
'
'point 2
Set bxMq = bxMq2
Set bxModele = bxModele2
bxMq.AddItem "EUPEC"
bxMq.AddItem "SEMIKRON"
bxMq.AddItem "FUJI"
bxMq.AddItem "IXYS"
bxModele.Clear
bxModele.AddItem ("Modèle")
'
'point 3
=> MEME CHOSE
'point 4
=>MEME CHOSE
End If
End Sub
Cela fait beaucoup de lignes de code pour pas grand chose,
J'ai donc essayé de condenser de la façon suivante :

Dim cpt As Integer
Dim bxMq As ComboBox
For cpt = 1 To 4
chaine = "bxMq" & cpt
Set bxMq = chaine
Set bxModele = "bxModele" & cpt
bxMq.AddItem "EUPEC"
bxMq.AddItem "SEMIKRON"
bxMq.AddItem "FUJI"
bxMq.AddItem "IXYS"
bxModele.Clear
bxModele.AddItem ("Modèle")
Next cpt

Mais le message d'erreur me disant que "chaine" n'est pas une combobox
s'affiche!

Quelqu'un a-t-il une idée?

FDESS