Je voudrais inserer des labels dans un userform
Mon code:
Private Sub UserForm_Initialize()
For i = 76.5 To 976.5 Step 18
Me.Controls.Add("Label" & K).Caption = "Label" & K
Me.Controls.Add("Label" & K).Top = i
Me.Controls.Add("Label" & K).Left = 57
Me.Controls.Add("Label" & K).Width = 35
Me.Controls.Add("Label" & K).Height = 18
K = K + 1
Next i
j'ai une erreur d'execution : chaine de classe incorrecte.
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
DanielCo
Bonjour, Un exemple avec des checkboxes tiré de : http://silkyroad.developpez.com/VBA/VisualBasicEditor/#LV-A
For i = 1 To 3 Set Obj = Me.Controls.Add("forms.Checkbox.1") With Obj .Name = "moncheckbox" & i .Object.Caption = "le texte" & i .Left = 140 .Top = 30 * i + 10 .Width = 50 .Height = 20 End With Next i
Cordialement. Daniel
Bonjour,
Je voudrais inserer des labels dans un userform Mon code:
Private Sub UserForm_Initialize()
For i = 76.5 To 976.5 Step 18 Me.Controls.Add("Label" & K).Caption = "Label" & K Me.Controls.Add("Label" & K).Top = i Me.Controls.Add("Label" & K).Left = 57 Me.Controls.Add("Label" & K).Width = 35 Me.Controls.Add("Label" & K).Height = 18 K = K + 1 Next i
j'ai une erreur d'execution : chaine de classe incorrecte.
Qui peut me dire pourquoi.
Merci
JP
Bonjour,
Un exemple avec des checkboxes tiré de :
http://silkyroad.developpez.com/VBA/VisualBasicEditor/#LV-A
For i = 1 To 3
Set Obj = Me.Controls.Add("forms.Checkbox.1")
With Obj
.Name = "moncheckbox" & i
.Object.Caption = "le texte" & i
.Left = 140
.Top = 30 * i + 10
.Width = 50
.Height = 20
End With
Next i
Cordialement.
Daniel
Bonjour,
Je voudrais inserer des labels dans un userform
Mon code:
Private Sub UserForm_Initialize()
For i = 76.5 To 976.5 Step 18
Me.Controls.Add("Label" & K).Caption = "Label" & K
Me.Controls.Add("Label" & K).Top = i
Me.Controls.Add("Label" & K).Left = 57
Me.Controls.Add("Label" & K).Width = 35
Me.Controls.Add("Label" & K).Height = 18
K = K + 1
Next i
j'ai une erreur d'execution : chaine de classe incorrecte.
Bonjour, Un exemple avec des checkboxes tiré de : http://silkyroad.developpez.com/VBA/VisualBasicEditor/#LV-A
For i = 1 To 3 Set Obj = Me.Controls.Add("forms.Checkbox.1") With Obj .Name = "moncheckbox" & i .Object.Caption = "le texte" & i .Left = 140 .Top = 30 * i + 10 .Width = 50 .Height = 20 End With Next i
Cordialement. Daniel
Bonjour,
Je voudrais inserer des labels dans un userform Mon code:
Private Sub UserForm_Initialize()
For i = 76.5 To 976.5 Step 18 Me.Controls.Add("Label" & K).Caption = "Label" & K Me.Controls.Add("Label" & K).Top = i Me.Controls.Add("Label" & K).Left = 57 Me.Controls.Add("Label" & K).Width = 35 Me.Controls.Add("Label" & K).Height = 18 K = K + 1 Next i
j'ai une erreur d'execution : chaine de classe incorrecte.
Qui peut me dire pourquoi.
Merci
JP
LSteph
Bonjour,
Un exemple:
Private lblCs(200) As MSForms.Label
Private Sub UserForm_Initialize() Me.Width = 350 Me.Height = 350 For i = 1 To 10 For j = 1 To 4 k = k + 1 Set lblCs(k) = Me.Controls.Add("Forms.Label.1", "lbl1") With lblCs(k) .Top = i * 25 .Left = (j * 80) - 50 .Caption = "Label" & k End With Next j Next i End Sub
'LSteph
Bonjour,
Un exemple:
Private lblCs(200) As MSForms.Label
Private Sub UserForm_Initialize()
Me.Width = 350
Me.Height = 350
For i = 1 To 10
For j = 1 To 4
k = k + 1
Set lblCs(k) = Me.Controls.Add("Forms.Label.1", "lbl1")
With lblCs(k)
.Top = i * 25
.Left = (j * 80) - 50
.Caption = "Label" & k
End With
Next j
Next i
End Sub
Private Sub UserForm_Initialize() Me.Width = 350 Me.Height = 350 For i = 1 To 10 For j = 1 To 4 k = k + 1 Set lblCs(k) = Me.Controls.Add("Forms.Label.1", "lbl1") With lblCs(k) .Top = i * 25 .Left = (j * 80) - 50 .Caption = "Label" & k End With Next j Next i End Sub
'LSteph
JP
Bonsoir Stephane,
Génial, je me suis bien ennuyé ce matin avec une autre solution. Ce qui est dommage c'est que les forms ne restent pas. Peut-on le faire?
Merci encore
JP
Bonsoir Stephane,
Génial, je me suis bien ennuyé ce matin avec une autre solution.
Ce qui est dommage c'est que les forms ne restent pas.
Peut-on le faire?
"JP" a écrit dans le message de news: Bonsoir Stephane,
Génial, je me suis bien ennuyé ce matin avec une autre solution. Ce qui est dommage c'est que les forms ne restent pas. Peut-on le faire?
Merci encore
JP
--- Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active. http://www.avast.com
JP
Bonjour Stéphane,
Si tu edites l'userform les labels ne sont pas dedans. IL faut lancer l'use rform_initialize() pour qu'ils apparaissent. Je demandais s'il y avait un moyen de créer une macro pour les inscrire e n dur dans l'userform.
JP
Bonjour Stéphane,
Si tu edites l'userform les labels ne sont pas dedans. IL faut lancer l'use rform_initialize() pour qu'ils apparaissent.
Je demandais s'il y avait un moyen de créer une macro pour les inscrire e n dur dans l'userform.
Si tu edites l'userform les labels ne sont pas dedans. IL faut lancer l'use rform_initialize() pour qu'ils apparaissent. Je demandais s'il y avait un moyen de créer une macro pour les inscrire e n dur dans l'userform.
JP
MichD
Bonjour,
Voici un exemple de code qui crée un formulaire à la volée c'est-à-dire qu'il est supprimé à la fermeture! Cependant, si tu inhibes cette ligne de code en plaçant une apostrophe devant, tu peux créer un formulaire, les contrôles à l'intérieur et le code à placer dans le formulaire et ce dernier demeurera à la fermeture. Attention, si le formulaire demeure, tu ne peux pas répéter cette procédure régulièrement parce que tu vas te retrouver avec une multitude de formulaires dans ton projetVBA.
Inhibe cette ligne de code si tu veux conserver le formulaire : ThisWorkbook.VBProject.VBComponents.Remove UF
Cette procédure requiert la référence suivante : "Microsoft forms 2.0 object library" Barre des menus / outils / références / et tu coches la case associée à cette référence.
'---------------------------------------------------------- Sub UserForm_aLaVolee() Dim UF As Object Dim L As MSForms.Label Dim CB As MSForms.CommandButton Dim A$ Dim i& On Error GoTo fin '---- Crée dynamiquement un UserForm ---- Set UF = ThisWorkbook.VBProject.VBComponents.Add(3) With UF .Properties("Caption") = "UserForm à la volée" .Properties("Height") = 240 .Properties("Width") = 320 End With '---- Crée le bouton de fermeture ---- Set CB = UF.Designer.Controls.Add("forms.CommandButton.1") With CB .Caption = "Fermer" .Left = 200 .Top = 180 End With '---- Crée le label ---- Set L = UF.Designer.Controls.Add("forms.Label.1") With L .Caption = "mon texte" .TextAlign = fmTextAlignCenter .Left = 20 .Top = 20 .BackColor = vbRed .BorderStyle = fmBorderStyleSingle End With '°°° Ajout du code évènementiel °°° A$ = "Sub CommandButton1_Click()" & _ vbCrLf & "Unload Me" & _ vbCrLf & "End Sub" With UF.CodeModule i& = .CountOfLines .InsertLines i& + 1, A$ End With '----------- A$ = "Sub Label1_Click()" & _ vbCrLf & "MsgBox " & _ """Vous avez cliqué sur mon texte""" & _ vbCrLf & "End Sub" With UF.CodeModule i& = .CountOfLines .InsertLines i& + 1, A$ End With '---- Affiche le UserForm ---- VBA.UserForms.Add(UF.Name).Show '---- Détruit le UserForm ---- ThisWorkbook.VBProject.VBComponents.Remove UF fin: End Sub '----------------------------------------------------------
"JP" a écrit dans le message de groupe de discussion :
Bonjour Stéphane,
Si tu edites l'userform les labels ne sont pas dedans. IL faut lancer l'userform_initialize() pour qu'ils apparaissent. Je demandais s'il y avait un moyen de créer une macro pour les inscrire en dur dans l'userform.
JP
Bonjour,
Voici un exemple de code qui crée un formulaire à la volée
c'est-à-dire qu'il est supprimé à la fermeture!
Cependant, si tu inhibes cette ligne de code en plaçant une
apostrophe devant, tu peux créer un formulaire, les contrôles à
l'intérieur et le code à placer dans le formulaire et ce dernier
demeurera à la fermeture. Attention, si le formulaire demeure,
tu ne peux pas répéter cette procédure régulièrement parce que
tu vas te retrouver avec une multitude de formulaires dans ton
projetVBA.
Inhibe cette ligne de code si tu veux conserver le formulaire :
ThisWorkbook.VBProject.VBComponents.Remove UF
Cette procédure requiert la référence suivante :
"Microsoft forms 2.0 object library"
Barre des menus / outils / références / et tu coches la case associée
à cette référence.
'----------------------------------------------------------
Sub UserForm_aLaVolee()
Dim UF As Object
Dim L As MSForms.Label
Dim CB As MSForms.CommandButton
Dim A$
Dim i&
On Error GoTo fin
'---- Crée dynamiquement un UserForm ----
Set UF = ThisWorkbook.VBProject.VBComponents.Add(3)
With UF
.Properties("Caption") = "UserForm à la volée"
.Properties("Height") = 240
.Properties("Width") = 320
End With
'---- Crée le bouton de fermeture ----
Set CB = UF.Designer.Controls.Add("forms.CommandButton.1")
With CB
.Caption = "Fermer"
.Left = 200
.Top = 180
End With
'---- Crée le label ----
Set L = UF.Designer.Controls.Add("forms.Label.1")
With L
.Caption = "mon texte"
.TextAlign = fmTextAlignCenter
.Left = 20
.Top = 20
.BackColor = vbRed
.BorderStyle = fmBorderStyleSingle
End With
'°°° Ajout du code évènementiel °°°
A$ = "Sub CommandButton1_Click()" & _
vbCrLf & "Unload Me" & _
vbCrLf & "End Sub"
With UF.CodeModule
i& = .CountOfLines
.InsertLines i& + 1, A$
End With
'-----------
A$ = "Sub Label1_Click()" & _
vbCrLf & "MsgBox " & _
"""Vous avez cliqué sur mon texte""" & _
vbCrLf & "End Sub"
With UF.CodeModule
i& = .CountOfLines
.InsertLines i& + 1, A$
End With
'---- Affiche le UserForm ----
VBA.UserForms.Add(UF.Name).Show
'---- Détruit le UserForm ----
ThisWorkbook.VBProject.VBComponents.Remove UF
fin:
End Sub
'----------------------------------------------------------
"JP" a écrit dans le message de groupe de discussion :
ca2374be-35c4-46fd-bb27-31014e100f5a@googlegroups.com...
Bonjour Stéphane,
Si tu edites l'userform les labels ne sont pas dedans. IL faut lancer
l'userform_initialize() pour qu'ils apparaissent.
Je demandais s'il y avait un moyen de créer une macro pour les inscrire en
dur dans l'userform.
Voici un exemple de code qui crée un formulaire à la volée c'est-à-dire qu'il est supprimé à la fermeture! Cependant, si tu inhibes cette ligne de code en plaçant une apostrophe devant, tu peux créer un formulaire, les contrôles à l'intérieur et le code à placer dans le formulaire et ce dernier demeurera à la fermeture. Attention, si le formulaire demeure, tu ne peux pas répéter cette procédure régulièrement parce que tu vas te retrouver avec une multitude de formulaires dans ton projetVBA.
Inhibe cette ligne de code si tu veux conserver le formulaire : ThisWorkbook.VBProject.VBComponents.Remove UF
Cette procédure requiert la référence suivante : "Microsoft forms 2.0 object library" Barre des menus / outils / références / et tu coches la case associée à cette référence.
'---------------------------------------------------------- Sub UserForm_aLaVolee() Dim UF As Object Dim L As MSForms.Label Dim CB As MSForms.CommandButton Dim A$ Dim i& On Error GoTo fin '---- Crée dynamiquement un UserForm ---- Set UF = ThisWorkbook.VBProject.VBComponents.Add(3) With UF .Properties("Caption") = "UserForm à la volée" .Properties("Height") = 240 .Properties("Width") = 320 End With '---- Crée le bouton de fermeture ---- Set CB = UF.Designer.Controls.Add("forms.CommandButton.1") With CB .Caption = "Fermer" .Left = 200 .Top = 180 End With '---- Crée le label ---- Set L = UF.Designer.Controls.Add("forms.Label.1") With L .Caption = "mon texte" .TextAlign = fmTextAlignCenter .Left = 20 .Top = 20 .BackColor = vbRed .BorderStyle = fmBorderStyleSingle End With '°°° Ajout du code évènementiel °°° A$ = "Sub CommandButton1_Click()" & _ vbCrLf & "Unload Me" & _ vbCrLf & "End Sub" With UF.CodeModule i& = .CountOfLines .InsertLines i& + 1, A$ End With '----------- A$ = "Sub Label1_Click()" & _ vbCrLf & "MsgBox " & _ """Vous avez cliqué sur mon texte""" & _ vbCrLf & "End Sub" With UF.CodeModule i& = .CountOfLines .InsertLines i& + 1, A$ End With '---- Affiche le UserForm ---- VBA.UserForms.Add(UF.Name).Show '---- Détruit le UserForm ---- ThisWorkbook.VBProject.VBComponents.Remove UF fin: End Sub '----------------------------------------------------------
"JP" a écrit dans le message de groupe de discussion :
Bonjour Stéphane,
Si tu edites l'userform les labels ne sont pas dedans. IL faut lancer l'userform_initialize() pour qu'ils apparaissent. Je demandais s'il y avait un moyen de créer une macro pour les inscrire en dur dans l'userform.
JP
MichD
J'ai omis de mentionner l'auteur de cet exemple "Frédéric Sigonneau". Tu devrais pouvoir retrouver l'original sur son site internet : http://frederic.sigonneau.free.fr/ ainsi que plusieurs autres choses intéressantes.
J'ai omis de mentionner l'auteur de cet exemple "Frédéric Sigonneau".
Tu devrais pouvoir retrouver l'original sur son site internet :
http://frederic.sigonneau.free.fr/ ainsi que plusieurs autres choses
intéressantes.
J'ai omis de mentionner l'auteur de cet exemple "Frédéric Sigonneau". Tu devrais pouvoir retrouver l'original sur son site internet : http://frederic.sigonneau.free.fr/ ainsi que plusieurs autres choses intéressantes.
LSteph
Bonjour,
Oui, c'est parce que tu étais parti sur un initialize que j'en ai suivi l 'idée et cela me semble être la bonne puisqu'in fine si on les créait en dur c'est qu'on ne voudrait pas utiliser de macro pour les créer une seconde fois. donc le concept du userform "dynamique" partirait d'un userform "vide" qui génère lui même ses composants.
Sinon regarde si l'exemple de FS proposé par MD te convient.
---
Suivant le même ordre d'idée tu peux aussi créer un Userform comprena nt déjà un certains nombre de contrôles typemais qui s'adaptent à un modèle de document selon un contexte et un objectif. Exemple por gérer une petite base: avoir prédisposé deux boutons, des textbox et listes qui selon les noms de champs adaptent le label qui va av ec et ne rendre visibles que les contrôles nécessaires.
---
En fait tout dépend de l'objectif et si c'est plus pour une tache fastidi euse ou répétitive.
Cordialement.
-- LSteph
Le mardi 24 décembre 2013 13:32:29 UTC+1, JP a écrit :
Bonjour Stéphane,
Si tu edites l'userform les labels ne sont pas dedans. IL faut lancer l'u serform_initialize() pour qu'ils apparaissent.
Je demandais s'il y avait un moyen de créer une macro pour les inscrire en dur dans l'userform.
JP
Bonjour,
Oui, c'est parce que tu étais parti sur un initialize que j'en ai suivi l 'idée
et cela me semble être la bonne puisqu'in fine si on les créait en dur c'est qu'on ne voudrait pas utiliser de macro pour les créer une seconde fois.
donc le concept du userform "dynamique" partirait d'un userform "vide" qui génère lui même ses composants.
Sinon regarde si l'exemple de FS proposé par MD te convient.
---
Suivant le même ordre d'idée tu peux aussi créer un Userform comprena nt déjà un certains nombre de contrôles typemais qui s'adaptent à un modèle de document selon un contexte et un objectif.
Exemple por gérer une petite base: avoir prédisposé deux boutons, des textbox et listes qui selon les noms de champs adaptent le label qui va av ec et ne rendre visibles que les contrôles nécessaires.
---
En fait tout dépend de l'objectif et si c'est plus pour une tache fastidi euse ou répétitive.
Cordialement.
--
LSteph
Le mardi 24 décembre 2013 13:32:29 UTC+1, JP a écrit :
Bonjour Stéphane,
Si tu edites l'userform les labels ne sont pas dedans. IL faut lancer l'u serform_initialize() pour qu'ils apparaissent.
Je demandais s'il y avait un moyen de créer une macro pour les inscrire en dur dans l'userform.
Oui, c'est parce que tu étais parti sur un initialize que j'en ai suivi l 'idée et cela me semble être la bonne puisqu'in fine si on les créait en dur c'est qu'on ne voudrait pas utiliser de macro pour les créer une seconde fois. donc le concept du userform "dynamique" partirait d'un userform "vide" qui génère lui même ses composants.
Sinon regarde si l'exemple de FS proposé par MD te convient.
---
Suivant le même ordre d'idée tu peux aussi créer un Userform comprena nt déjà un certains nombre de contrôles typemais qui s'adaptent à un modèle de document selon un contexte et un objectif. Exemple por gérer une petite base: avoir prédisposé deux boutons, des textbox et listes qui selon les noms de champs adaptent le label qui va av ec et ne rendre visibles que les contrôles nécessaires.
---
En fait tout dépend de l'objectif et si c'est plus pour une tache fastidi euse ou répétitive.
Cordialement.
-- LSteph
Le mardi 24 décembre 2013 13:32:29 UTC+1, JP a écrit :
Bonjour Stéphane,
Si tu edites l'userform les labels ne sont pas dedans. IL faut lancer l'u serform_initialize() pour qu'ils apparaissent.
Je demandais s'il y avait un moyen de créer une macro pour les inscrire en dur dans l'userform.
JP
JP
Je suis toujours stupéfait des possibilités du vba. Dans mon cas j'avais 150 labels (3 colonnes de 50) à créer et 100 check box (2 colonnes de 50). C'est assez fastidieux de tout créer avec un alignement parfait. Mais je vais étudier de près cette solution car, dans le cas que je vie ns de traité, le nombre des labels et checkbox varient de 10 à 50.
Merci pour toutes ces informations.
JPierre
Je suis toujours stupéfait des possibilités du vba.
Dans mon cas j'avais 150 labels (3 colonnes de 50) à créer et 100 check box (2 colonnes de 50).
C'est assez fastidieux de tout créer avec un alignement parfait.
Mais je vais étudier de près cette solution car, dans le cas que je vie ns de traité, le nombre des labels et checkbox varient de 10 à 50.
Je suis toujours stupéfait des possibilités du vba. Dans mon cas j'avais 150 labels (3 colonnes de 50) à créer et 100 check box (2 colonnes de 50). C'est assez fastidieux de tout créer avec un alignement parfait. Mais je vais étudier de près cette solution car, dans le cas que je vie ns de traité, le nombre des labels et checkbox varient de 10 à 50.