Ajout d OLEObject dans un userform

A

Arno

Guest
Bonjour,

j souhaite ajouter des combobox et des textbox dans un userform mais de facon dynamique. Dans mon projet.xls, j ai une feuille 'sheet1' et un bouton 'bouton1' qui en clickant dessus me demande de rentrer un nb entre 1 et 10, et ensuite ouvre un userform 'userform1' qui doit contenir le nbre entré de combobox et de textbox. Mon pb est que la cmd:

'OLEObj = ws.OLEObjects.Add(classtype:='Forms.CommandButton.1', Left:=362, Top:=23, Width:=87, Height:=20)
'

ne fonctionne pas et me renvoie 'Erreur1004, impossible d insérer un objet'...

Si quelqu un pouvait m aider...

merci dav
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Arno, re ShiningHawk, le Forum

A ma connaissance on ne met pas d'OLEObjects dans un UserForm. Il peut contenir directement des Objects MSForm. Le fait de passer par des OLEObjects c'est lors de manipulation de Contrôles ActiveX directement sur une Feuille de Calcul.

Ici une démo de génération d'un UserForm généré à la volée en RunTime avec une ListBox et un Commande Button...

Lien supprimé

Si tu cherches aussi dans ce Forum tu trouveras des codes que j'ai écrit pour des générations en masse de TextBox avec Label...

Bonne Fin d'Aprèm
[ol]@+Thierry[/ol]


PS Sous Office XP et +, penser à cocher dans Outils / Macros / Sécurité :



Message édité par: _Thierry, à: 17/08/2005 17:12
 

MichelXld

XLDnaute Barbatruc
bonjour

tu peux tester cet exemple
cette macro est associée à un CommandButton dans la feuille


Private Sub CommandButton1_Click()
Dim Usf As Object
Dim Obj As Object

Set Usf = ThisWorkbook.VBProject.VBComponents('Userform1')
Set Obj = Usf.Designer.Controls.Add('forms.textBox.1')

With Obj
.Left = 362: .Top = 23: .Width = 87: .Height = 20
End With

VBA.UserForms.Add (Usf.Name)
UserForms(0).Show
End Sub



bonne soiree
MichelXld
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonsoir Arno, Salut Michel, le Fil, le Forum

De quoi parles-tu qui ne marche pas mieux ?

1) De la démo que je t'ai mise en ligne

2) Du code de Michel

3) Du petit dernier de la voisine du cousin germain qui vient d'avoir 1 mois ?


En général une erreur 9 indique que tu tente de manipuler un object qui n'existe pas...

En l'occurence je suppose que tu tentes de faire tourner le code de Michel sans avoir de 'UserForm1' dans le Projet...

Par contre l'a pas été de main morte sur le Left mon copain Michel, faut faire un UserForm assez large pour entrevoir la TextBox ... ;)

Bonne Soirée
[ol]@+Thierry[/ol]
 
A

Arno

Guest
Comment fait on pour voir apparaitre les differents membres disponibles pour une fct? exemple, qd on tape VBA. , on voit apparaitre une liste. Ds l exemple que vs m avez filé:
'
Set Usf = ThisWorkbook.VBProject.VBComponents('Userform1')
For n = 0 To NbMat
Set Obj = Usf.designer.Controls.Add('forms.textBox.1')
With Obj
.Left = 100 * n: .Top = 23: .Width = 87: .Height = 20
End With
Next

VBA.UserForms.Add (Usf.name)
UserForm1.Show
'

aucun des champs est reconnu. De plus, Userform1.Show n est pas reconnu lors de l execution.
 

MichelXld

XLDnaute Barbatruc
BONJOUR Arno , bonjour Shining Hawk et @+Thierry

cela depend de la façon dont tu déclares tes variables

par exemple , si tu actives la reference

Microsoft Visual Basic for Applications extensibility 5.3

dans l'editeur de macros
Menu outils
coches la ligne concernée
cliques sur OK pour valider


tu peux ensuite ecrire

Code:
'Microsoft Visual Basic for Applications extensibility 5.3
Dim Usf As VBComponent
Dim Obj As MSForms.TextBox

Set Usf = ThisWorkbook.VBProject.VBComponents('Userform1')
Set Obj = Usf.Designer.Controls.Add('forms.textBox.1')

With Obj
.Left = 30: .Top = 23: .Width = 87: .Height = 20
End With

VBA.UserForms.Add (Usf.Name)
UserForms(0).Show

et tu as ainsi acces à la saisie semi automatique d'Excel VBA



bone soiree
MichelXld

Message édité par: MichelXld, à: 18/08/2005 17:21
 
A

Arno

Guest
J ai cocher 'Microsoft Visual Basic for Applications extensibility 5.3
ds references du menu outils et je n ai accès que partiellement a la saisie automatique..Par exple, pour Usf, il n est pas reconnu!
Sinon, puis j evs envoyer mon fichier histoire que vs y jettiez un coup d oeil?? ca serait cool...
merci dav
 
A

arno

Guest
Merci pr ton script, je l ai mis a ma sauce ms j ai un pb. La fct killMe et Unload Me n ont pas l air de fctionner. Je ne comprend pas pourkoi car ton projet tourne bien, efface a chque appel le userform crée ms qd je fais un copier-coller-arranger chez moi, les userform ne s effacent pas et j m retrouve avec pleins de userform..pas cool! et encore mieux de temps en temps la fct killme n est pas trouvé et fait planté le prog!!!
 

Discussions similaires

Statistiques des forums

Discussions
312 332
Messages
2 087 361
Membres
103 530
dernier inscrit
Chess01