Ajouter dynamiquement des controles ds un Userform

Ajouter dynamiquement des controles ds un Userform - VB/VBA/VBS - Programmation

Marsh Posté le 17-08-2005 à 18:39:36    

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...
 

Reply

Marsh Posté le 17-08-2005 à 18:39:36   

Reply

Marsh Posté le 19-08-2005 à 08:12:05    

Si tu es dans Excel, inutile d'appeler un OLEObject.
 
Ce petit code fonctionne:

Code :
  1. Sub DoAddControls(iNumber As Integer)
  2.   Dim ctlNew As Control
  3.   Dim iI As Integer
  4.   For iI = 1 To iNumber
  5.     Set ctlNew = frmTest.Controls.Add("Forms.ComboBox.1" )
  6.     ' ctlNew.Left = xx
  7.     ' ctlNew.Top = yy
  8.     Set ctlNew = frmTest.Controls.Add("Forms.TextBox.1" )
  9.     ' ctlNew.Left = xx + nn
  10.     ' ctlNew.Top = yy
  11.   Next iI
  12. End Sub


Les contrôles sont biens créés mais ils sont tous superposés.
A toi de gérer les tailles et positions.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 23-08-2005 à 12:29:57    

Ok, merci, mais ce petit code ne fctionne pas super..  
dc je reprend:
j ai une feuille "Welcome" avec une case a remplir: 1 entier de 1 à 10. puis, un bouton "Load". Le click sur Load doit faire apparaitre un UserForm avec le nbre rentré de Combox.
Le pb vient du fait que le morco de code doit etre écris dans la macro UserFormOnActivate et il n est pas reconnu...
Voici mon code:
 
ds la feuille "Welcome"
Sub Click()
UserForm1.Show
End Sub
 
 
ds le Userform
Private Sub UserForm_Activate()
  Dim MyControl As Controls
  Set MyControl = UserForm1.Controls.Add("Forms.ComboBox.1" )
Set MyControl = UserForm1.Controls.Add("Forms.TextBox.1" )
End Sub
 
Si quelqu un a une idée..ca serait cool!
 
 
 

Reply

Marsh Posté le 23-08-2005 à 15:16:48    

Oui, tu ne peux ajouter des composants a ta userform que pendant son chargement (donc a la methode Initialize et non Activate)
 
Car ca n'a aucun sens de modifier ta userform une fois qu'elle est charge en memoire.
 
Je ne suis pas sur de ce que j'avance (je n'ai pas verifié), mais ca me parait assez logique.


---------------
Guendalf
Reply

Marsh Posté le 23-08-2005 à 22:39:50    

Quand tu dis qu'il ne fonctionne pas super, tu ne dis pas ce qui ne va pas.
 
J'ai testé le code que je t'ai donné et il fonctionne très bien.
 
Il ne reste plus qu'à gérer la position des contrôles créés.
 
Par contre,

Dim MyControl As Controls


risque de ne pas bien fonctionner du tout.
Il faut supprimer le s de Control.
Tu n'ajoutes qu'un contrôle à la fois.


Message édité par AlainTech le 23-08-2005 à 22:40:14
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed