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

[VBA] creer a la volé bouton et son code qques précision SVP...

14 réponses
Avatar
Orel
Bonjour,


apres avoir fureté dans les archives du group (sur google) ,
j'ai trouvé un moyen de créer un bouton a la volé sur ma userform...
par contre pour ce qui est de lui attaché un event click ... c'est une autre
histoire...
je n'ai trouvé que des exemples de "génération de code" dans une feuil ...
j'ai bidouiller et je suis arrivé a
inséré mon code dans ma userform...

mais rien ne se passe qd je click sur le bouton ....
j'ai bien un bouton nomé : m_chercher_auteur dans ma userform
et une proc nommé :
sub private m_chercher_auteur_click ()
msgbox("coucou")
end sub


mais rien ne se passe....

qqun pourrai me dire ce qui ce passe ???
merci

mon code :

Function CreerControle(name As String, nom As String, x As Integer, y As
Integer, largeur As Integer, longeur As Integer)
UserForm1.Frame2.Controls.Add "Forms." & name & ".1", nom, True
With UserForm1.Controls(nom)
.Left = x
.Width = longeur
.Top = y
End With
End Function



Function InsérerLeCodeDuBouton(NomBouton As String)

Dim A As String, Code As String

Code = "Private Sub " & NomBouton & "_Click()" & vbCrLf
Code = Code & " Msgbox ""Bonjour""" & vbCrLf
Code = Code & "End Sub"

With ThisWorkbook.VBProject.VBComponents("UserForm1").CodeModule
.AddFromString Code
End With
End Function


orel

10 réponses

1 2
Avatar
Michel Gaboly
Bonjour,

Chez moi, cela fonctionne bien. Le plus probable, comme le nom du
bouton est à rallonge, c'est une faute de frappe.

Essaie comme cela : dans les propriétés du bouton, sélectionne son nom
et Copie-le. Colle-le ensuite dans la ligne créant le code,

InsérerLeCodeDuBouton "NomBouton"

en rajoutant les guillemets. Au moins tu seras sûr de la concordance.


Par ailleurs je te déconseille de mettre des "_" dans les noms de
contrôle Résetve ce caractère aux procédures événementielles, pour
éviter toute ambiguïté.

Dernier détail, tu peux remplacer vbCrLf par vbNewLine, c'est +
lisible, je trouve.



Bonjour,

apres avoir fureté dans les archives du group (sur google) ,
j'ai trouvé un moyen de créer un bouton a la volé sur ma userform...
par contre pour ce qui est de lui attaché un event click ... c'est une autre
histoire...
je n'ai trouvé que des exemples de "génération de code" dans une feuil ...
j'ai bidouiller et je suis arrivé a
inséré mon code dans ma userform...

mais rien ne se passe qd je click sur le bouton ....
j'ai bien un bouton nomé : m_chercher_auteur dans ma userform
et une proc nommé :
sub private m_chercher_auteur_click ()
msgbox("coucou")
end sub

mais rien ne se passe....

qqun pourrai me dire ce qui ce passe ???
merci

mon code :

Function CreerControle(name As String, nom As String, x As Integer, y As
Integer, largeur As Integer, longeur As Integer)
UserForm1.Frame2.Controls.Add "Forms." & name & ".1", nom, True
With UserForm1.Controls(nom)
.Left = x
.Width = longeur
.Top = y
End With
End Function

Function InsérerLeCodeDuBouton(NomBouton As String)

Dim A As String, Code As String

Code = "Private Sub " & NomBouton & "_Click()" & vbCrLf
Code = Code & " Msgbox ""Bonjour""" & vbCrLf
Code = Code & "End Sub"

With ThisWorkbook.VBProject.VBComponents("UserForm1").CodeModule
.AddFromString Code
End With
End Function

orel


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
PMO
Bonjour,

Plutôt que de bidouiller votre code, je vous
prie de trouver, ci-dessous, un exemple de code
que vous pourrez modifier à votre aise et qui devrait
répondre à votre attente.
Copiez ce code dans un module standard.
N'omettez surtout pas d'installer les 2 références qui
sont indiquées à son début.

DETAILS:
Crée un UserForm à la volée.
Y insère un CommanButton et un Label.
Leur ajoute leur code évènementiel respectif.
Affiche le UserForm puis le détruit.

A plus.

PMO
Patrick Morange

***************************
Option Explicit
'############################################
'# Ajouter impérativement les références #
'# suivantes dans Menu Outils/Références #
'# #
'# Microsoft Visual Basic 6.0 Extensibility #
'# Microsoft Forms 2.0 Object Library #
'############################################
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(vbext_ct_MSForm)
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
******************************



-----Message d'origine-----
Bonjour,


apres avoir fureté dans les archives du group (sur
google) ,

j'ai trouvé un moyen de créer un bouton a la volé sur ma
userform...

par contre pour ce qui est de lui attaché un event
click ... c'est une autre

histoire...
je n'ai trouvé que des exemples de "génération de code"
dans une feuil ...

j'ai bidouiller et je suis arrivé a
inséré mon code dans ma userform...

mais rien ne se passe qd je click sur le bouton ....
j'ai bien un bouton nomé : m_chercher_auteur dans ma
userform

et une proc nommé :
sub private m_chercher_auteur_click ()
msgbox("coucou")
end sub


mais rien ne se passe....

qqun pourrai me dire ce qui ce passe ???
merci

mon code :

Function CreerControle(name As String, nom As String, x
As Integer, y As

Integer, largeur As Integer, longeur As Integer)
UserForm1.Frame2.Controls.Add "Forms." & name
& ".1", nom, True

With UserForm1.Controls(nom)
.Left = x
.Width = longeur
.Top = y
End With
End Function



Function InsérerLeCodeDuBouton(NomBouton As String)

Dim A As String, Code As String

Code = "Private Sub " & NomBouton & "_Click()" & vbCrLf
Code = Code & " Msgbox ""Bonjour""" & vbCrLf
Code = Code & "End Sub"

With ThisWorkbook.VBProject.VBComponents
("UserForm1").CodeModule

.AddFromString Code
End With
End Function


orel


.



Avatar
Orel
Merci ... mais ce n'est pas la le probleme ... j'avais deja fait des
copié/collé (j'en fait toujours ...) ;o))

j'ai trouvé une méthode "CreateEventProc" qui pourrai convenir mais je
n'atrrive pas a l'utilisé ...

encore une foi merci de me donner un ti coup de pouce...

orel

"Michel Gaboly" a écrit dans le message news:

Bonjour,

Chez moi, cela fonctionne bien. Le plus probable, comme le nom du
bouton est à rallonge, c'est une faute de frappe.

Essaie comme cela : dans les propriétés du bouton, sélectionne son nom
et Copie-le. Colle-le ensuite dans la ligne créant le code,

InsérerLeCodeDuBouton "NomBouton"

en rajoutant les guillemets. Au moins tu seras sûr de la concordance.


Par ailleurs je te déconseille de mettre des "_" dans les noms de
contrôle Résetve ce caractère aux procédures événementielles, pour
éviter toute ambiguïté.

Dernier détail, tu peux remplacer vbCrLf par vbNewLine, c'est +
lisible, je trouve.



Bonjour,

apres avoir fureté dans les archives du group (sur google) ,
j'ai trouvé un moyen de créer un bouton a la volé sur ma userform...
par contre pour ce qui est de lui attaché un event click ... c'est une
autre


histoire...
je n'ai trouvé que des exemples de "génération de code" dans une feuil
...


j'ai bidouiller et je suis arrivé a
inséré mon code dans ma userform...

mais rien ne se passe qd je click sur le bouton ....
j'ai bien un bouton nomé : m_chercher_auteur dans ma userform
et une proc nommé :
sub private m_chercher_auteur_click ()
msgbox("coucou")
end sub

mais rien ne se passe....

qqun pourrai me dire ce qui ce passe ???
merci

mon code :

Function CreerControle(name As String, nom As String, x As Integer, y As
Integer, largeur As Integer, longeur As Integer)
UserForm1.Frame2.Controls.Add "Forms." & name & ".1", nom, True
With UserForm1.Controls(nom)
.Left = x
.Width = longeur
.Top = y
End With
End Function

Function InsérerLeCodeDuBouton(NomBouton As String)

Dim A As String, Code As String

Code = "Private Sub " & NomBouton & "_Click()" & vbCrLf
Code = Code & " Msgbox ""Bonjour""" & vbCrLf
Code = Code & "End Sub"

With ThisWorkbook.VBProject.VBComponents("UserForm1").CodeModule
.AddFromString Code
End With
End Function

orel


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





Avatar
Michel Gaboly
Re,

Par curiosité, s'il n'est pas confidentiel, envoie-moi ton classeur ;
j'aimerais comprendre ;-))


Merci ... mais ce n'est pas la le probleme ... j'avais deja fait des
copié/collé (j'en fait toujours ...) ;o))

j'ai trouvé une méthode "CreateEventProc" qui pourrai convenir mais je
n'atrrive pas a l'utilisé ...

encore une foi merci de me donner un ti coup de pouce...

orel

"Michel Gaboly" a écrit dans le message news:

Bonjour,

Chez moi, cela fonctionne bien. Le plus probable, comme le nom du
bouton est à rallonge, c'est une faute de frappe.

Essaie comme cela : dans les propriétés du bouton, sélectionne son nom
et Copie-le. Colle-le ensuite dans la ligne créant le code,

InsérerLeCodeDuBouton "NomBouton"

en rajoutant les guillemets. Au moins tu seras sûr de la concordance.


Par ailleurs je te déconseille de mettre des "_" dans les noms de
contrôle Résetve ce caractère aux procédures événementielles, pour
éviter toute ambiguïté.

Dernier détail, tu peux remplacer vbCrLf par vbNewLine, c'est +
lisible, je trouve.



Bonjour,

apres avoir fureté dans les archives du group (sur google) ,
j'ai trouvé un moyen de créer un bouton a la volé sur ma userform...
par contre pour ce qui est de lui attaché un event click ... c'est une
autre


histoire...
je n'ai trouvé que des exemples de "génération de code" dans une feuil
...


j'ai bidouiller et je suis arrivé a
inséré mon code dans ma userform...

mais rien ne se passe qd je click sur le bouton ....
j'ai bien un bouton nomé : m_chercher_auteur dans ma userform
et une proc nommé :
sub private m_chercher_auteur_click ()
msgbox("coucou")
end sub

mais rien ne se passe....

qqun pourrai me dire ce qui ce passe ???
merci

mon code :

Function CreerControle(name As String, nom As String, x As Integer, y As
Integer, largeur As Integer, longeur As Integer)
UserForm1.Frame2.Controls.Add "Forms." & name & ".1", nom, True
With UserForm1.Controls(nom)
.Left = x
.Width = longeur
.Top = y
End With
End Function

Function InsérerLeCodeDuBouton(NomBouton As String)

Dim A As String, Code As String

Code = "Private Sub " & NomBouton & "_Click()" & vbCrLf
Code = Code & " Msgbox ""Bonjour""" & vbCrLf
Code = Code & "End Sub"

With ThisWorkbook.VBProject.VBComponents("UserForm1").CodeModule
.AddFromString Code
End With
End Function

orel


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com



Avatar
Orel
Merci Patrick ....
Mais ca ne marche toujours pas chez moi ...(ou plutot au boulot ...)
1/ je n'ai pas :Microsoft Visual Basic 6.0 Extensibility (je n'ai que la 5.3
cela convient il ???)
2/ ce n'ai pas tout a fait ce que je veux faire... cf ton code ...
3/ ce que je veux faire :
- créer un boutton a la volé (ca OK)
- lui affecter son evenement click (ca KO !!!)

j'ai essayer plein de methode notemment celle du site de frederique
sigonneau (addbouton)....

je désespere un peu il semble y avoir plein de soluce mais je n'arrive a en
faire fonctionner aucune....


orel


"PMO" a écrit dans le message de
news: 00e101c3b8ef$356e4720$
Bonjour,

Plutôt que de bidouiller votre code, je vous
prie de trouver, ci-dessous, un exemple de code
que vous pourrez modifier à votre aise et qui devrait
répondre à votre attente.
Copiez ce code dans un module standard.
N'omettez surtout pas d'installer les 2 références qui
sont indiquées à son début.

DETAILS:
Crée un UserForm à la volée.
Y insère un CommanButton et un Label.
Leur ajoute leur code évènementiel respectif.
Affiche le UserForm puis le détruit.

A plus.

PMO
Patrick Morange

***************************
Option Explicit
'############################################
'# Ajouter impérativement les références #
'# suivantes dans Menu Outils/Références #
'# #
'# Microsoft Visual Basic 6.0 Extensibility #
'# Microsoft Forms 2.0 Object Library #
'############################################
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(vbext_ct_MSForm)
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
******************************



-----Message d'origine-----
Bonjour,


apres avoir fureté dans les archives du group (sur
google) ,

j'ai trouvé un moyen de créer un bouton a la volé sur ma
userform...

par contre pour ce qui est de lui attaché un event
click ... c'est une autre

histoire...
je n'ai trouvé que des exemples de "génération de code"
dans une feuil ...

j'ai bidouiller et je suis arrivé a
inséré mon code dans ma userform...

mais rien ne se passe qd je click sur le bouton ....
j'ai bien un bouton nomé : m_chercher_auteur dans ma
userform

et une proc nommé :
sub private m_chercher_auteur_click ()
msgbox("coucou")
end sub


mais rien ne se passe....

qqun pourrai me dire ce qui ce passe ???
merci

mon code :

Function CreerControle(name As String, nom As String, x
As Integer, y As

Integer, largeur As Integer, longeur As Integer)
UserForm1.Frame2.Controls.Add "Forms." & name
& ".1", nom, True

With UserForm1.Controls(nom)
.Left = x
.Width = longeur
.Top = y
End With
End Function



Function InsérerLeCodeDuBouton(NomBouton As String)

Dim A As String, Code As String

Code = "Private Sub " & NomBouton & "_Click()" & vbCrLf
Code = Code & " Msgbox ""Bonjour""" & vbCrLf
Code = Code & "End Sub"

With ThisWorkbook.VBProject.VBComponents
("UserForm1").CodeModule

.AddFromString Code
End With
End Function


orel


.



Avatar
Orel
Merci Patrick ....
Mais ca ne marche toujours pas chez moi ...(ou plutot au boulot ...)
1/ je n'ai pas :Microsoft Visual Basic 6.0 Extensibility (je n'ai que la 5.3
cela convient il ???)
2/ ce n'ai pas tout a fait ce que je veux faire... cf ton code ...
3/ ce que je veux faire :
- créer un boutton a la volé dans le userform en cours (ca OK)
- lui affecter son evenement click (ca KO !!!)

j'ai essayer plein de methode notemment celle du site de frederique
sigonneau (addbouton)....

je désespere un peu il semble y avoir plein de soluce mais je n'arrive a en
faire fonctionner aucune....


orel
"PMO" a écrit dans le message de
news: 00e101c3b8ef$356e4720$
Bonjour,

Plutôt que de bidouiller votre code, je vous
prie de trouver, ci-dessous, un exemple de code
que vous pourrez modifier à votre aise et qui devrait
répondre à votre attente.
Copiez ce code dans un module standard.
N'omettez surtout pas d'installer les 2 références qui
sont indiquées à son début.

DETAILS:
Crée un UserForm à la volée.
Y insère un CommanButton et un Label.
Leur ajoute leur code évènementiel respectif.
Affiche le UserForm puis le détruit.

A plus.

PMO
Patrick Morange

***************************
Option Explicit
'############################################
'# Ajouter impérativement les références #
'# suivantes dans Menu Outils/Références #
'# #
'# Microsoft Visual Basic 6.0 Extensibility #
'# Microsoft Forms 2.0 Object Library #
'############################################
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(vbext_ct_MSForm)
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
******************************



-----Message d'origine-----
Bonjour,


apres avoir fureté dans les archives du group (sur
google) ,

j'ai trouvé un moyen de créer un bouton a la volé sur ma
userform...

par contre pour ce qui est de lui attaché un event
click ... c'est une autre

histoire...
je n'ai trouvé que des exemples de "génération de code"
dans une feuil ...

j'ai bidouiller et je suis arrivé a
inséré mon code dans ma userform...

mais rien ne se passe qd je click sur le bouton ....
j'ai bien un bouton nomé : m_chercher_auteur dans ma
userform

et une proc nommé :
sub private m_chercher_auteur_click ()
msgbox("coucou")
end sub


mais rien ne se passe....

qqun pourrai me dire ce qui ce passe ???
merci

mon code :

Function CreerControle(name As String, nom As String, x
As Integer, y As

Integer, largeur As Integer, longeur As Integer)
UserForm1.Frame2.Controls.Add "Forms." & name
& ".1", nom, True

With UserForm1.Controls(nom)
.Left = x
.Width = longeur
.Top = y
End With
End Function



Function InsérerLeCodeDuBouton(NomBouton As String)

Dim A As String, Code As String

Code = "Private Sub " & NomBouton & "_Click()" & vbCrLf
Code = Code & " Msgbox ""Bonjour""" & vbCrLf
Code = Code & "End Sub"

With ThisWorkbook.VBProject.VBComponents
("UserForm1").CodeModule

.AddFromString Code
End With
End Function


orel


.



Avatar
Michel Gaboly
Re,

Tu as lu mon message, où je te demandais de m'envoyer le fichier (il faut
enlever "Supp" à l'adresse apparente), si ce n'est pas confidentiel.

Cela m'intrigue, je regarderais volontiers.



Merci Patrick ....
Mais ca ne marche toujours pas chez moi ...(ou plutot au boulot ...)
1/ je n'ai pas :Microsoft Visual Basic 6.0 Extensibility (je n'ai que la 5.3
cela convient il ???)
2/ ce n'ai pas tout a fait ce que je veux faire... cf ton code ...
3/ ce que je veux faire :
- créer un boutton a la volé dans le userform en cours (ca OK)
- lui affecter son evenement click (ca KO !!!)

j'ai essayer plein de methode notemment celle du site de frederique
sigonneau (addbouton)....

je désespere un peu il semble y avoir plein de soluce mais je n'arrive a en
faire fonctionner aucune....

orel
"PMO" a écrit dans le message de
news: 00e101c3b8ef$356e4720$
Bonjour,

Plutôt que de bidouiller votre code, je vous
prie de trouver, ci-dessous, un exemple de code
que vous pourrez modifier à votre aise et qui devrait
répondre à votre attente.
Copiez ce code dans un module standard.
N'omettez surtout pas d'installer les 2 références qui
sont indiquées à son début.

DETAILS:
Crée un UserForm à la volée.
Y insère un CommanButton et un Label.
Leur ajoute leur code évènementiel respectif.
Affiche le UserForm puis le détruit.

A plus.

PMO
Patrick Morange

***************************
Option Explicit
'############################################
'# Ajouter impérativement les références #
'# suivantes dans Menu Outils/Références #
'# #
'# Microsoft Visual Basic 6.0 Extensibility #
'# Microsoft Forms 2.0 Object Library #
'############################################
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(vbext_ct_MSForm)
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
******************************

-----Message d'origine-----
Bonjour,


apres avoir fureté dans les archives du group (sur
google) ,

j'ai trouvé un moyen de créer un bouton a la volé sur ma
userform...

par contre pour ce qui est de lui attaché un event
click ... c'est une autre

histoire...
je n'ai trouvé que des exemples de "génération de code"
dans une feuil ...

j'ai bidouiller et je suis arrivé a
inséré mon code dans ma userform...

mais rien ne se passe qd je click sur le bouton ....
j'ai bien un bouton nomé : m_chercher_auteur dans ma
userform

et une proc nommé :
sub private m_chercher_auteur_click ()
msgbox("coucou")
end sub


mais rien ne se passe....

qqun pourrai me dire ce qui ce passe ???
merci

mon code :

Function CreerControle(name As String, nom As String, x
As Integer, y As

Integer, largeur As Integer, longeur As Integer)
UserForm1.Frame2.Controls.Add "Forms." & name
& ".1", nom, True

With UserForm1.Controls(nom)
.Left = x
.Width = longeur
.Top = y
End With
End Function



Function InsérerLeCodeDuBouton(NomBouton As String)

Dim A As String, Code As String

Code = "Private Sub " & NomBouton & "_Click()" & vbCrLf
Code = Code & " Msgbox ""Bonjour""" & vbCrLf
Code = Code & "End Sub"

With ThisWorkbook.VBProject.VBComponents
("UserForm1").CodeModule

.AddFromString Code
End With
End Function


orel


.




--
Cordialement,

Michel Gaboly
http://www.gaboly.com


Avatar
Denis Michon
Bonjour Orel,

Si tu as une version excel 2002 ou plus récente,

à partir de la barre des menus de la feuille de calcul / outils / option / sécurité /
Un clic sur le bouton "Sécurité des macro..." et cocher dans la fenêtre ouvrante : "Faire confiance au projet visual basic"

Bibliothèque ajoutée :

"Microsoft visual basic for applications extensibility 5.3"

Ton projet n'a pas besoin d'avoir un formulaire existant avant de lancer la macro.. la macro le crée et ajoute un contrôle
avec le code approprié à ce bouton.

Si tu as des problèmes essaie avec un nouveau classeur en ajoutant la bibliothèque !

'---------------------------------
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(vbext_ct_MSForm)
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
'---------------------------------


Salutations!






"Orel" a écrit dans le message de news:
Merci Patrick ....
Mais ca ne marche toujours pas chez moi ...(ou plutot au boulot ...)
1/ je n'ai pas :Microsoft Visual Basic 6.0 Extensibility (je n'ai que la 5.3
cela convient il ???)
2/ ce n'ai pas tout a fait ce que je veux faire... cf ton code ...
3/ ce que je veux faire :
- créer un boutton a la volé dans le userform en cours (ca OK)
- lui affecter son evenement click (ca KO !!!)

j'ai essayer plein de methode notemment celle du site de frederique
sigonneau (addbouton)....

je désespere un peu il semble y avoir plein de soluce mais je n'arrive a en
faire fonctionner aucune....


orel
"PMO" a écrit dans le message de
news: 00e101c3b8ef$356e4720$
Bonjour,

Plutôt que de bidouiller votre code, je vous
prie de trouver, ci-dessous, un exemple de code
que vous pourrez modifier à votre aise et qui devrait
répondre à votre attente.
Copiez ce code dans un module standard.
N'omettez surtout pas d'installer les 2 références qui
sont indiquées à son début.

DETAILS:
Crée un UserForm à la volée.
Y insère un CommanButton et un Label.
Leur ajoute leur code évènementiel respectif.
Affiche le UserForm puis le détruit.

A plus.

PMO
Patrick Morange

***************************
Option Explicit
'############################################
'# Ajouter impérativement les références #
'# suivantes dans Menu Outils/Références #
'# #
'# Microsoft Visual Basic 6.0 Extensibility #
'# Microsoft Forms 2.0 Object Library #
'############################################
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(vbext_ct_MSForm)
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
******************************



-----Message d'origine-----
Bonjour,


apres avoir fureté dans les archives du group (sur
google) ,

j'ai trouvé un moyen de créer un bouton a la volé sur ma
userform...

par contre pour ce qui est de lui attaché un event
click ... c'est une autre

histoire...
je n'ai trouvé que des exemples de "génération de code"
dans une feuil ...

j'ai bidouiller et je suis arrivé a
inséré mon code dans ma userform...

mais rien ne se passe qd je click sur le bouton ....
j'ai bien un bouton nomé : m_chercher_auteur dans ma
userform

et une proc nommé :
sub private m_chercher_auteur_click ()
msgbox("coucou")
end sub


mais rien ne se passe....

qqun pourrai me dire ce qui ce passe ???
merci

mon code :

Function CreerControle(name As String, nom As String, x
As Integer, y As

Integer, largeur As Integer, longeur As Integer)
UserForm1.Frame2.Controls.Add "Forms." & name
& ".1", nom, True

With UserForm1.Controls(nom)
.Left = x
.Width = longeur
.Top = y
End With
End Function



Function InsérerLeCodeDuBouton(NomBouton As String)

Dim A As String, Code As String

Code = "Private Sub " & NomBouton & "_Click()" & vbCrLf
Code = Code & " Msgbox ""Bonjour""" & vbCrLf
Code = Code & "End Sub"

With ThisWorkbook.VBProject.VBComponents
("UserForm1").CodeModule

.AddFromString Code
End With
End Function


orel


.



Avatar
Michel Pierron
Salut Orel;
Tu n'as aucunement besoin d'ajouter une référence supplémentaire si tu
remplaces
Set UF = ThisWorkbook.VBProject.VBComponents.Add (vbext_ct_MSForm)
par
Set UF = ThisWorkbook.VBProject.VBComponents.Add(3)

MP

"Orel" a écrit dans le message de
news:
Merci Patrick ....
Mais ca ne marche toujours pas chez moi ...(ou plutot au boulot ...)
1/ je n'ai pas :Microsoft Visual Basic 6.0 Extensibility (je n'ai que la
5.3

cela convient il ???)
2/ ce n'ai pas tout a fait ce que je veux faire... cf ton code ...
3/ ce que je veux faire :
- créer un boutton a la volé dans le userform en cours (ca OK)
- lui affecter son evenement click (ca KO !!!)

j'ai essayer plein de methode notemment celle du site de frederique
sigonneau (addbouton)....

je désespere un peu il semble y avoir plein de soluce mais je n'arrive a
en

faire fonctionner aucune....


orel
"PMO" a écrit dans le message de
news: 00e101c3b8ef$356e4720$
Bonjour,

Plutôt que de bidouiller votre code, je vous
prie de trouver, ci-dessous, un exemple de code
que vous pourrez modifier à votre aise et qui devrait
répondre à votre attente.
Copiez ce code dans un module standard.
N'omettez surtout pas d'installer les 2 références qui
sont indiquées à son début.

DETAILS:
Crée un UserForm à la volée.
Y insère un CommanButton et un Label.
Leur ajoute leur code évènementiel respectif.
Affiche le UserForm puis le détruit.

A plus.

PMO
Patrick Morange

***************************
Option Explicit
'############################################
'# Ajouter impérativement les références #
'# suivantes dans Menu Outils/Références #
'# #
'# Microsoft Visual Basic 6.0 Extensibility #
'# Microsoft Forms 2.0 Object Library #
'############################################
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(vbext_ct_MSForm)
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
******************************



-----Message d'origine-----
Bonjour,


apres avoir fureté dans les archives du group (sur
google) ,

j'ai trouvé un moyen de créer un bouton a la volé sur ma
userform...

par contre pour ce qui est de lui attaché un event
click ... c'est une autre

histoire...
je n'ai trouvé que des exemples de "génération de code"
dans une feuil ...

j'ai bidouiller et je suis arrivé a
inséré mon code dans ma userform...

mais rien ne se passe qd je click sur le bouton ....
j'ai bien un bouton nomé : m_chercher_auteur dans ma
userform

et une proc nommé :
sub private m_chercher_auteur_click ()
msgbox("coucou")
end sub


mais rien ne se passe....

qqun pourrai me dire ce qui ce passe ???
merci

mon code :

Function CreerControle(name As String, nom As String, x
As Integer, y As

Integer, largeur As Integer, longeur As Integer)
UserForm1.Frame2.Controls.Add "Forms." & name
& ".1", nom, True

With UserForm1.Controls(nom)
.Left = x
.Width = longeur
.Top = y
End With
End Function



Function InsérerLeCodeDuBouton(NomBouton As String)

Dim A As String, Code As String

Code = "Private Sub " & NomBouton & "_Click()" & vbCrLf
Code = Code & " Msgbox ""Bonjour""" & vbCrLf
Code = Code & "End Sub"

With ThisWorkbook.VBProject.VBComponents
("UserForm1").CodeModule

.AddFromString Code
End With
End Function


orel


.







Avatar
Orel
avant tout : Merci a vous tous pour votre aide ...

je code sur VBA XL97

j'ai en effet
remplacer:
Set UF = ThisWorkbook.VBProject.VBComponents.Add (vbext_ct_MSForm)
par
Set UF = ThisWorkbook.VBProject.VBComponents.Add(3)



j'ai coché les cases qui vont bien comme me l'a indiqué denis....

et en effet le code marche nickel maintenant ...
g bien une userform qui s'affiche avec deans un label avec son code etc etc
....

le tout est que :

j'ai deja une userform existante sur laquelle j'ai une combobox et en
fonction du choix , je veux generer
- un champ texte ayant pour nom combobox.value (1)
- et un bouton repondant a l'evenement click combobox.value_click()....(2)

j'arrive a faire (1) .
j'arrive a genérer le bouton mais pas a générer sa proc evenementielle ....
ne serai ce que pour afficher "coucou" dans un premier temps ;o))


vous m'avez donc tous mis un peu sur la voix mais je galere encore bcp !!
je reprend ca demain au boulot alors essayer de revenir sur le file de temps
en temps... MERCI ;o)



orel.

"Michel Pierron" a écrit dans le message de news:

Salut Orel;
Tu n'as aucunement besoin d'ajouter une référence supplémentaire si tu
remplaces
Set UF = ThisWorkbook.VBProject.VBComponents.Add (vbext_ct_MSForm)
par
Set UF = ThisWorkbook.VBProject.VBComponents.Add(3)

MP

"Orel" a écrit dans le message de
news:
Merci Patrick ....
Mais ca ne marche toujours pas chez moi ...(ou plutot au boulot ...)
1/ je n'ai pas :Microsoft Visual Basic 6.0 Extensibility (je n'ai que la
5.3

cela convient il ???)
2/ ce n'ai pas tout a fait ce que je veux faire... cf ton code ...
3/ ce que je veux faire :
- créer un boutton a la volé dans le userform en cours (ca OK)
- lui affecter son evenement click (ca KO !!!)

j'ai essayer plein de methode notemment celle du site de frederique
sigonneau (addbouton)....

je désespere un peu il semble y avoir plein de soluce mais je n'arrive a
en

faire fonctionner aucune....


orel
"PMO" a écrit dans le message
de


news: 00e101c3b8ef$356e4720$
Bonjour,

Plutôt que de bidouiller votre code, je vous
prie de trouver, ci-dessous, un exemple de code
que vous pourrez modifier à votre aise et qui devrait
répondre à votre attente.
Copiez ce code dans un module standard.
N'omettez surtout pas d'installer les 2 références qui
sont indiquées à son début.

DETAILS:
Crée un UserForm à la volée.
Y insère un CommanButton et un Label.
Leur ajoute leur code évènementiel respectif.
Affiche le UserForm puis le détruit.

A plus.

PMO
Patrick Morange

***************************
Option Explicit
'############################################
'# Ajouter impérativement les références #
'# suivantes dans Menu Outils/Références #
'# #
'# Microsoft Visual Basic 6.0 Extensibility #
'# Microsoft Forms 2.0 Object Library #
'############################################
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(vbext_ct_MSForm)
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
******************************



-----Message d'origine-----
Bonjour,


apres avoir fureté dans les archives du group (sur
google) ,

j'ai trouvé un moyen de créer un bouton a la volé sur ma
userform...

par contre pour ce qui est de lui attaché un event
click ... c'est une autre

histoire...
je n'ai trouvé que des exemples de "génération de code"
dans une feuil ...

j'ai bidouiller et je suis arrivé a
inséré mon code dans ma userform...

mais rien ne se passe qd je click sur le bouton ....
j'ai bien un bouton nomé : m_chercher_auteur dans ma
userform

et une proc nommé :
sub private m_chercher_auteur_click ()
msgbox("coucou")
end sub


mais rien ne se passe....

qqun pourrai me dire ce qui ce passe ???
merci

mon code :

Function CreerControle(name As String, nom As String, x
As Integer, y As

Integer, largeur As Integer, longeur As Integer)
UserForm1.Frame2.Controls.Add "Forms." & name
& ".1", nom, True

With UserForm1.Controls(nom)
.Left = x
.Width = longeur
.Top = y
End With
End Function



Function InsérerLeCodeDuBouton(NomBouton As String)

Dim A As String, Code As String

Code = "Private Sub " & NomBouton & "_Click()" & vbCrLf
Code = Code & " Msgbox ""Bonjour""" & vbCrLf
Code = Code & "End Sub"

With ThisWorkbook.VBProject.VBComponents
("UserForm1").CodeModule

.AddFromString Code
End With
End Function


orel


.











1 2