OVH Cloud OVH Cloud

Nom Listbox dans une boucle for

5 réponses
Avatar
francky207
Bonjour,

Je voudrais dans une boucle For affecter une valeur à chaque listbox
d'une form en fonction de l'incrémentation de la boucle.

Un exemple sera plus parlant.

J'ai 10 listbox. Leur nom est Lst_CIV_1, Lst_CIV_2,..., Lst_CIV_10

Donc je voudrais un truc du genre :
For I = 1 to 10
Lst_CIV_(I) = range("A" & I)
Next I

Bon j'ai simplifié mais l'idée est là.

Quelqu'un aurait-il une idée ?
Zouri tu va bien trouver le petit truc j'en suis sur !

Merci en tout cas.

Franck

5 réponses

Avatar
le_troll
Bonjour,

Ben, suffit de déclarer une list(indicée), soit:
list1(i).... 0 à 9, ou 1 à 10 et tu supprime la 0...
Où est le problème ???

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !


"Franck" a écrit dans le message de
news:
Bonjour,

Je voudrais dans une boucle For affecter une valeur à chaque listbox
d'une form en fonction de l'incrémentation de la boucle.

Un exemple sera plus parlant.

J'ai 10 listbox. Leur nom est Lst_CIV_1, Lst_CIV_2,..., Lst_CIV_10

Donc je voudrais un truc du genre :
For I = 1 to 10
Lst_CIV_(I) = range("A" & I)
Next I

Bon j'ai simplifié mais l'idée est là.

Quelqu'un aurait-il une idée ?
Zouri tu va bien trouver le petit truc j'en suis sur !

Merci en tout cas.

Franck


Avatar
Patrice Henrio
Tu peux utiliser une boucle sur la collection controls

For each C in MaForme.Controls
If Instr("Lst_CIV_",C.Caption) > 0 then
C=range("A" & Mid$(C.Caption,9))
End If
Next C

On suppose bien entendu qu'aucun autre contrôle de la forme ne commence par
Lst_CIV_
Le 9 dans le Mid$ provient du fait que "Lst_CIV_" contient 8 caractères.

Je n'ai pas testé mais ça doit marcher.

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

Bonjour,

Je voudrais dans une boucle For affecter une valeur à chaque listbox
d'une form en fonction de l'incrémentation de la boucle.

Un exemple sera plus parlant.

J'ai 10 listbox. Leur nom est Lst_CIV_1, Lst_CIV_2,..., Lst_CIV_10

Donc je voudrais un truc du genre :
For I = 1 to 10
Lst_CIV_(I) = range("A" & I)
Next I

Bon j'ai simplifié mais l'idée est là.

Quelqu'un aurait-il une idée ?
Zouri tu va bien trouver le petit truc j'en suis sur !

Merci en tout cas.

Franck


Avatar
francky207
Bonjour Patrice,

Merci beaucoup car ta réponse m'a permi d'aboutir au résultat que je
désirais. J'ai juste inversé les données de ton InStr (elles étaient
inversées) et j'ai préféré un cells à un range. ;-)
Mais sinon c'est parfait.

For Each c In Usf_Menu.Controls
If InStr(c.Name, "Txt_CIV_") > 0 Then
c.Value = Cells(I, CLng(Mid$(c.Name, 9)))
End If
Next c


Franck
Avatar
francky207
Mais oui bien sur !

Pourquoi n'y ai-je pas pensé avant.

Tu parles de quoi là ?

Tu n'as pas un exemple par rapport à ma demande.
Je suis certain que ça pourrait m'aider à comprendre comment crééer
une liste indicée sur des controls box.

Merci en tout cas de ta réponse.

Franck
Avatar
ng
Salut,

Et sinon pourquoi ne pas utiliser un groupe de controle ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


Franck wrote:
Bonjour Patrice,

Merci beaucoup car ta réponse m'a permi d'aboutir au résultat que je
désirais. J'ai juste inversé les données de ton InStr (elles étaient
inversées) et j'ai préféré un cells à un range. ;-)
Mais sinon c'est parfait.

For Each c In Usf_Menu.Controls
If InStr(c.Name, "Txt_CIV_") > 0 Then
c.Value = Cells(I, CLng(Mid$(c.Name, 9)))
End If
Next c


Franck