Boucle for et listbox

  • Initiateur de la discussion Initiateur de la discussion Goutedo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
1 K
B
Réponses
0
Affichages
790
Benoit
B
I
Réponses
4
Affichages
4 K
I
Retour