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

ajouter une TextBox

2 réponses
Avatar
Rekam
Bonjour!

Je désire ajouter, via une macro, une TextBox. J'ai trouvé des exemples dans
la doc mais impossible de les faire fonctionner. Voici le code :

Dim tb As Control
nb = nb + 1
Set tb = Me.Controls.Add("MSForms.TextBox.1") ', "tb" & nb)

nb est une variable qui s'incrémente de 1 à chaque fois qu'on veut ajouter
une TextBox. Mais voilà, il me sort une erreur lorsque je fais le
Controls.add (Chaîne de classe incorrecte... c quoi ça ???). Je ne comprend
pas pourquoi. L'exemple était avec des CommandButton, mais ne fonctionnait
pas non plus.

Mais où est donc le problème ?
Dors et déjà merci!

2 réponses

Avatar
MichDenis
Bonjour Rekam,

En principe, si ton formulaire est ouvert et tu veux ajouter un contrôle sur ce formulaire... je te souhaite bonne
chance ....;-)) habituellement, il est préférable d'ajouter tous les contrôles que l'on a besoin et de jouer sur la
propriété visible de ou des objets du formulaire au moment opportun dans le code ....

Pour ajouter un bouton de commande et le code associé à ce bouton, tu copies la procédure suivante ( je crois qu'elle
est de Frédéric Sigonneau) dans un module standard ...(ton formulaire ne doit pas être afficher pour exécuter cette
procédure ... !

Comme d'habitude, excel est plein de chinoiseries ...

Pourquoi forms.commandbutton.1 au lieu de Msforms.commandbutton.1

L'explorateur d'objet demeure muet sur Forms ... et il en est de même pour "Designer" de la procédure

Avec une présentation aussi merdique... de l'aide de son propre logiciel, il n'est pas étonnant que tu sois un peu perdu
!


'----------------------------------
Sub AddBouton()
Dim Usf As Object, btn As Object
Set Usf = ThisWorkbook.VBProject.VBComponents("Userform1")
Set btn = Usf.Designer.Controls.Add("forms.commandbutton.1")
With btn
.Caption = "Cliquer ici !..."
.Left = 60: .Top = 50
End With
With Usf.CodeModule
X = .CountOfLines
.insertlines X + 1, "Sub CommandButton1_Click()"
.insertlines X + 2, " MsgBox ""coucou"""
.insertlines X + 3, " unload Me"
.insertlines X + 4, "End Sub"
End With
VBA.UserForms.Add (Usf.Name)
UserForms(UserForms.Count - 1).Show
End Sub
'----------------------------------


Salutations!




"Rekam" a écrit dans le message de news:

Bonjour!

Je désire ajouter, via une macro, une TextBox. J'ai trouvé des exemples dans
la doc mais impossible de les faire fonctionner. Voici le code :

Dim tb As Control
nb = nb + 1
Set tb = Me.Controls.Add("MSForms.TextBox.1") ', "tb" & nb)

nb est une variable qui s'incrémente de 1 à chaque fois qu'on veut ajouter
une TextBox. Mais voilà, il me sort une erreur lorsque je fais le
Controls.add (Chaîne de classe incorrecte... c quoi ça ???). Je ne comprend
pas pourquoi. L'exemple était avec des CommandButton, mais ne fonctionnait
pas non plus.

Mais où est donc le problème ?
Dors et déjà merci!
Avatar
papou
Bonjour
En complément de la réponse précédente
Tu n'étais pas si loin !
Me.Controls.Add "forms.textbox.1", "tb" & nb

En revanche, il faut intégrer un positionnement de chaque contrôle sinon ils
seront superposés les uns sur les autres.
Cordialement
Pascal


"Rekam" a écrit dans le message de news:

Bonjour!

Je désire ajouter, via une macro, une TextBox. J'ai trouvé des exemples
dans
la doc mais impossible de les faire fonctionner. Voici le code :

Dim tb As Control
nb = nb + 1
Set tb = Me.Controls.Add("MSForms.TextBox.1") ', "tb" & nb)

nb est une variable qui s'incrémente de 1 à chaque fois qu'on veut ajouter
une TextBox. Mais voilà, il me sort une erreur lorsque je fais le
Controls.add (Chaîne de classe incorrecte... c quoi ça ???). Je ne
comprend
pas pourquoi. L'exemple était avec des CommandButton, mais ne fonctionnait
pas non plus.

Mais où est donc le problème ?
Dors et déjà merci!