Création de controle dynamique et module de classe
1 réponse
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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
à 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" <Nico_63@discussions.microsoft.com> a écrit dans le message de
news: 1BBF6DFD-DB5C-461B-9581-337F6EB2827C@microsoft.com...
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.
à 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.