Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Création de controle dynamique et module de classe

1 réponse
Avatar
Nico_63
Bonjour à tous.

Ma question:
Comment créér dynamiquement plusieurs controles sur un userform (en
l'occurence des label) ET les affecter à une classe définie ??

Ou plus précisément:

**********************************************
**********************************************
Je sais créér des controles dynamiquement dans une userform,
avec une procédure de la forme:

For a = 1 To 5
Set Mycmd = Controls.Add("Forms.Label.1", "nouv" & a)
Mycmd.Width = 80
Mycmd.Height = 22
Mycmd.Caption = Mycmd.Name
Mycmd.Left = 45
Mycmd.Top = 300 + (24 * a)
Mycmd.BorderStyle = 1
Next a

pour créér par exemple dans ce cas 5 controles de type Label

**********************************************
**********************************************

Par ailleurs, je sais coder l'affectation de controles à un module de classe,
ce qui permet ensuite de définir le comportement des controles sur les
événements.

exemple:

Public Sub un()
Dim classenicolabel(1 To 4) As classenico
Dim I As Integer
For I = 1 To 4
Set classenicolabel(I) = New classenico
Set classenicolabel(I).Label = UserForm1.Controls("Label" & I)
Next I
UserForm1.Show
End Sub

et le module de classe associé:

Public WithEvents Label As MSForms.Label
Private Sub Label_Click()
If Label.Caption = "xxxxxxxxxx" Then
Label.Caption = "oooooooooo"
Else
Label.Caption = "xxxxxxxxxx"
End If
End Sub
Dans cet exemple, 1 clic sur le label change sa caption.

**********************************************
**********************************************

1 réponse

Avatar
michdenis
Voici un exemple : http://cjoint.com/?biqgHRPV7g

à la volée, il y a création de CheckBox sur un formulaire...
selon que tu coches un checkbox particulier une colonne
de la feuille active se masque ou s'affiche.

Le principe est similaire... tu n'as qu'à adapter !

Originalement, ce classeur créée par JB que j'ai complété.




"Nico_63" a écrit dans le message de
news:
Bonjour à tous.

Ma question:
Comment créér dynamiquement plusieurs controles sur un userform (en
l'occurence des label) ET les affecter à une classe définie ??

Ou plus précisément:

**********************************************
**********************************************
Je sais créér des controles dynamiquement dans une userform,
avec une procédure de la forme:

For a = 1 To 5
Set Mycmd = Controls.Add("Forms.Label.1", "nouv" & a)
Mycmd.Width = 80
Mycmd.Height = 22
Mycmd.Caption = Mycmd.Name
Mycmd.Left = 45
Mycmd.Top = 300 + (24 * a)
Mycmd.BorderStyle = 1
Next a

pour créér par exemple dans ce cas 5 controles de type Label

**********************************************
**********************************************

Par ailleurs, je sais coder l'affectation de controles à un module de
classe,
ce qui permet ensuite de définir le comportement des controles sur les
événements.

exemple:

Public Sub un()
Dim classenicolabel(1 To 4) As classenico
Dim I As Integer
For I = 1 To 4
Set classenicolabel(I) = New classenico
Set classenicolabel(I).Label = UserForm1.Controls("Label" & I)
Next I
UserForm1.Show
End Sub

et le module de classe associé:

Public WithEvents Label As MSForms.Label
Private Sub Label_Click()
If Label.Caption = "xxxxxxxxxx" Then
Label.Caption = "oooooooooo"
Else
Label.Caption = "xxxxxxxxxx"
End If
End Sub
Dans cet exemple, 1 clic sur le label change sa caption.

**********************************************
**********************************************