Création dynamique de contrôle ?

  • Initiateur de la discussion Initiateur de la discussion Alza
  • 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 !

A

Alza

Guest
Bonjour !

Je viens chercher vôtre aide car je n'ai pas réussi à trouver sur internet de tuto répondant à ma problématique ..
Pour expliquer rapidement :
J'ai des équipes, que je souhaite rentrer dans des listbox pour faire un visu de mes différentes équipes et de certaines de leur caractéristique.
Problème : je ne sais pas combien il y a d'équipes, je dois donc créer mes listbox dynamiquement, jusque la pas trop compliquer je fais boucler ce morceau de code sur mes équipes :

Code:
Set ctlListbox = Controls.Add("Forms.listbox.1", "lb" + CStr(i) + "Equipe")

On en arrive à mon problème : Comment prendre le contrôle de chaque listbox séparément afin de les remplir ?
Car pour l'instant je ne peux agir que sur ctlListbox et pas sur 1 listbox individuellement ..

Je m'excuse je ne peux pas fournir de fichier avec le code, bien qu’honnêtement pour le moment c'est très vide en dehors de la ligne fournie plus haut et de la boucle !

Merci d'avance pour votre aide,
Alza'
 
Re,

Juste pour que vous compreniez bien, voyez le fichier joint avec dans le Module de classe :
Code:
Public WithEvents LB As MSForms.ListBox

Private Sub LB_Change()
MsgBox LB 'juste pour tester
End Sub
Et dans Module1 :
Code:
Dim LB() As New Classe1

Sub USF()
Dim nlig&, j%, i&
With Feuil1.[A1].CurrentRegion 'CodeName de la feuille
  nlig = .Rows.Count
  For j = 1 To .Columns.Count
    ReDim Preserve LB(1 To j)
    Set LB(j).LB = UserForm1.Controls.Add("Forms.listbox.1", .Cells(1, j))
    LB(j).LB.Top = 12
    LB(j).LB.Left = 12 + 92 * (j - 1)
    LB(j).LB.Height = 100
    LB(j).LB.Width = 80
    For i = 2 To nlig
      If .Cells(i, j) <> "" Then LB(j).LB.AddItem .Cells(i, j)
  Next i, j
End With
UserForm1.Width = 92 * (j - 1) + 12
UserForm1.Show
End Sub
A+
 

Pièces jointes

Bonjour,

En fait non la listbox elle même n'a pas besoin d'autres opérations que le remplissage mais j'y ai associé des boutons qui eux ont en effet eux besoin de modules de classes, très utile donc !

Alza'
 
- 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.
Retour