création dynamique de contrôle - VB/VBA/VBS - Programmation
Marsh Posté le 09-05-2003 à 14:00:23
toi tu es un petit veinard J'en ai fait ces deux derniers jours... Tout dépend de ce à quoi tu veux arriver exactement, et quelle base tu as au départ sur ton écran.
Si tu parles de contrôles en array, et qu'un contrôle initial existe sur l'écran, il faut qu'il porte l'index zéro, et tu devras faire un truc du style
Load TextBox1(1)
et référencer ton nouveau contrôle par
TextBox1(1).Text = "bonjour"
Je crois que ton problème est là: tu dois spécifier un index.
Marsh Posté le 09-05-2003 à 14:07:08
Sinon, créer dynamiquement un contrôle tout seul dans un coin de l'écran exige une référence. Dans ce cas, oublie le Load:
Code :
|
Cette ligne crée un ListView dont la référence est assignée à objComCtl. Il faudra bien sûr l'initialiser, sachant que par exemple, le contrôle est invisible au départ.
C'est fort utile pour récupérer les events d'avoir une variable permanente, qui doit être déclarée:
Code :
|
L'identifiant Controls est une collection associée à toute Form. Le premier paramètre est le type de contrôle, et le second est une clé pour l'identifier dans la collection. Si tu ne veux pas avoir de référence via une variable, tu pourras toujours le retrouver avec:
Code :
|
qui renverra la référence vers le contrôle.
Marsh Posté le 09-05-2003 à 14:45:03
merci bien drasche, ça marche, j'utilise la deuxième méthode.
Mais un petit détail m'échappe. Quand je fais ça :
MsgBox Controls("menu1" ), j'obtiens bien le text du control menu1
Le problème, c'est que j'ai crée menu1, menu2, menu3 ... et je voudrais accèder successivement à leur valeur dans une boucle.
De type :
For i = 1 To nbmenu
texte = "Me.menu" & i
MsgBox Controls(texte)
Next
Mais j'obtiens alors une erreur 730 , erreur d'exécution 'Me.menu1' introuvable ??? Je comprends pas.
si tu peux m'aider ...
Marsh Posté le 10-05-2003 à 00:28:09
vire le "me.", à première vue c'est ça qui salope tout
Marsh Posté le 21-02-2008 à 06:21:00
J ai le mm probleme,
Excel ne trouve pas l object...
comment faire?
PS j ai essayer d enlevr me et ca marche tjrs pas
Marsh Posté le 09-05-2003 à 13:55:09
j'ai crée des controles dynamiques avec load controle. Problème, je n'arrive pas à accéder au valeur des propriétés de ce contrôle.
Exemple, je crée dynamiquement un textbox avec le nom textbox1, je fais Me.textbox1.Text, et j'obtient une erreur à l'execution. J'ai pallié ce problème en parcourant tous les contrôles du formulaire et en testant chaque fois, le name de de contrôle, j'arrive effectivment à récupérer la valeur voulue, mais cela m'oblige à parcourir tous les controles.
Merci de vos lumières ...