Boucle for et listbox

G

Goutedo

Guest
bonjour à tous.

désolé pour ce post un peu long mais il faut que j'explique bien les choses, car en plus je suis un gros débutant donc je ne sais pas vraiment bien expliquer


Alors j'ai un formulaire sur lequel se trouvent 11 ListBox nommées Manut, Manut1 ... .
Chacune de ses listbox a pour référence la même plage "A1:A23".

Le code ci-dessus est celui que j'utilise pour définir une listbox est le suivant (et ca marche bien)

With Sheets("Stocks").Range("A1")
Manut.rowsource = range(.cells,.end(xlDown).address(External:=true)
End With

Une solution serait de recopier 11 fois cette ligne en changeant le nom à chaque fois. Je cherche toutefois à alleger mon code en créant une boucle "for".
La logique voudrait que je définisse donc une variable.
Pourtant je n'arrive pas la définir afin qu'elle soit compatible avec la ligne ci-dessus.

Quelqu'un peut-il m'aider à réaliser cette boucle "FOR"?


Merci à tous ceux qui auront eu la sympathie de lire ce message.
et toute ma reconnaissance à ceux qui m'approcheront de la solution
 
H

herve

Guest
salut!

1) ci joint un petit fichier que j'avais fait il y a quelque temps et ou tu trouvera des listbox qui se remplissent avec la méthode que tu cherches...
esperons que cela t'aidera...

2) tu peux beaucoup plus simplement donner a la propriete rowsource la valeur " Stocks!a1:a23".

ta list box s'ouvrira aussitot avec ses valeurs...

@+
herve
 
G

Goutedo

Guest
Merci Hervé pour avoir répondu à mon message.

Toutefois, et j'en suis désolé, je n'ai pas trouvé de réponse à mes petits soucis.

Sachant que le code serait:

...
With Sheets("Stocks").Range("A1")
Manut.rowsource = range(.cells,.end(xlDown).address(External:=true)
Manut1.rowsource = range(.cells,.end(xlDown).address(External:=true)
Manut2.rowsource = range(.cells,.end(xlDown).address(External:=true)
End With
...


Manut; Manut1, Manut2... étant des listbox
Comment faire pour arriver à un code qui serait à peu près comme ceci:

For Nom_manut = 1 to 100
With Sheets("Stocks").Range("A1")
Nom_manut.rowsource = range(.cells,.end(xlDown).address(External:=true)
End With
Next

Merci à tous ceux que pourront m'aider à trouver une solution.

Goutedo
 
W

wally

Guest
Bonjour Goutedo et le forum,

Voici un petit exemple de code qui j'espère répondra à tes attentes :

Dim oCtl As Control

With Sheets("Stocks").Range("A1")
For Each oCtl In UserForm1.Controls
'Seulement les listbox dont le nom commence par "Manut"
If TypeName(oCtl) = "ListBox" And Left(oCtl.Name, 5) = "Manut" Then
oCtl.RowSource = Range(.Cells, .End(xlDown)).Address(External:=True)
End If
Next oCtl
End With


Slts

wally
 

Discussions similaires

Réponses
3
Affichages
346

Statistiques des forums

Discussions
313 137
Messages
2 095 626
Membres
106 308
dernier inscrit
F.DIAS