Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Placer un contrôle dans une variable

11 views
Skip to first unread message

Raymond Fournier

unread,
Jul 5, 2007, 8:22:02 AM7/5/07
to
Je voudrais placer le nom d'un textbox dans une variable. J'ai fais

Dim i As Byte
Dim nom As TextBox

Select Case tbsMenu.SelectedItem.Index
Case 1
nom = txtNomMenu(0).Name
Case 2
nom = txtNomAccompagnement(0).Name
Case 3
nom = txtNomDessert(0).Name
End Select

For i = 1 To 14
nom(i).BorderStyle = vbFixedSingle
Next i

Les textbox sont crée dynamiquement est sont afficher avant cette procédure.
Je reçois le message d'erreur "Nombre d'argument incorrect ou affectation de
la propriété incorrecte."

Si quelqu'un a une idée sur ce que je ne fais pas correct ?
Merci Raymond Fournier

François Picalausa

unread,
Jul 5, 2007, 10:12:17 AM7/5/07
to
On Jul 5, 2:22 pm, Raymond Fournier

Hello,

Le plus gros problème est que tu emploies une variables contenant le
nom du contrôle et non le contrôle lui même.
Tu peux y palier en utilisant la collection Controls de la sorte:
Me.Controls(nom, i).BorderStyle = vbFixedSingle

Une autre possibilité est d'éviter directement l'usage du nom, au
profit d'une variable contenant la collection de contrôles voulue:
Dim Ctls As Object
[...]

Case 1:
Set Ctls = txtNomMenu
Case 2:
Set Ctls = [...]

[...]
Ctls(i).BorderStyle = vbFixedSingle

Il doit être possible d'utiliser mieux que Object pour le type, mais
je n'ai pas réussi à trouver le type précis dont dérivent ces
collections.

François

Vincent Guichard

unread,
Jul 5, 2007, 10:35:56 AM7/5/07
to
Raymond Fournier a écrit :

> Je voudrais placer le nom d'un textbox dans une variable.
Ok. Ce n'est pas ce que tu fais (ou semble faire) dans le code que tu
donne en exemple ci-dessous. Peux-tu expliciter tes besoins?

Plusieurs possibilités:
1- Tu veux mémoriser le nom d'un contrôle
Dim Nom as String
Nom = txtNomMenu(0).Name

2- Tu veux mémoriser une référence sur un contrôle pour pouvoir le
réutiliser par la suite pour accéder à ses propriétés
Dim txtControle as TextBox
Set txtControle = txtNomMenu(0)
txtControle.BorderStyle = vbFixedSingle

3- Tu veux mémoriser le nom d'un contrôle, et accéder à ses propriétés
en se basant sur son nom
Dim Nom as String
Nom = txtNomMenu(0).Name
Controls(Nom).BorderStyle = vbFixedSingle

Dans ton cas, le problème est que tu as une collection d'objets, et non
pas un objet seul, donc cela complique un peu les choses. Par contre,
comme tu connais le nom (dans le select), je comprends pas bien pourquoi
tu ne fais pas ton affectation à ce moment là. Enfin bref...

Donc voici un code qui devrais faire ce que tu veux:
Dim i as Integer 'Aucune raison d'être en Byte ici
Dim Nom as String


Select Case tbsMenu.SelectedItem.Index
Case 1

Nom = "txtNomMenu"
Case 2
Nom = "txtNomAccompagnement"
Case 3
Nom = "txtNomDessert"
End Select
For i = 1 to 14
Controls(Nom).Item(i).BorderStyle = vbFixedSingle
Next i

Vincent Guichard

Raymond Fournier

unread,
Jul 5, 2007, 10:52:02 AM7/5/07
to

"Vincent Guichard" wrote:

Merci a tout ceux qui mon éclairer. sa fonction numéro 1.
Raymond Fournier

0 new messages