Mettre les noms de controle dans un tableau puis les utiliser ? [Résolu]

Signaler
Messages postés
18
Date d'inscription
mercredi 1 avril 2009
Statut
Membre
Dernière intervention
23 décembre 2010
-
Messages postés
18
Date d'inscription
mercredi 1 avril 2009
Statut
Membre
Dernière intervention
23 décembre 2010
-
Bonjour à tous,

J'ecris un programme et je me heurte à un problème. L'execution du programme est assez répétitive et je souhaiterais faire mon code une fois et le réutiliser sans le modifier.

J'ai ainsi de nombreux controles sur mon formulaire, je voudrais rentrez les noms de ces controles dans un tableau.

ex : T1(1,1) = Textbox1
T1(1,2) = Textbox2
T1(1,3) = Textbox3
.....

Est il possible par la suite de faire un truc du genre
For i = 1 to ...
T1(1,i).Text = "quelquechose"
Next

Merci de vos reponses,

3 réponses

Messages postés
132
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
11 mai 2010

Bonjour,

Tu peux t'inspirer de ce que je fais :
Public TBox(60) As System.Windows.Forms.TextBox
Public VarTrav As String                '   Variable de travail

        '   Chargement des noms des TextBox en table pour pouvoir les charger par Tbox(index)
        For Each Ctrl As Control In Me.Controls
            If Ctrl.Name.Substring(0, 2) = "TB" Then      ' Chaque TextBox est nommé TB...
                VarTrav = Ctrl.Name
                TBox(CInt(Mid(Ctrl.Name, 3, 2))) = CType(Ctrl, System.Windows.Forms.TextBox)
            End If
        Next

        '   Chargement des TextBox
        j = 0
        For i = 0 To 19
            If Not DateAff(i) = "" Then
                j = j + 1
                TBox(j).Text = DateAff(i)
                j = j + 1
                TBox(j).Text = Poidsfix(i)
                j = j + 1
                TBox(j).Text = PoidsSD(i)
            End If
        Next


Cordiales salutations et bonne prog
dp
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
salut,

pas aussi simplement non, pas en VB6 du moins

ça ne sera pas
T1(1,2) = Textbox2

mais
T1(1,2) = "Textbox2" 

mais dans ton cas, si chaque control a bien un nom unique (pas de groupe de controls), il vaut mieux utiliser une collection pour jouer sur le KEY

dim cControls as new collection
'texte, nom du ctrl
cControls.add "zone1", "Textbox1"
cControls.add "zone2", "Textbox2"
cControls.add "un bouton", "CommandButton1"


ensuite il faudra faire une boucle et tester CHAQUE TYPE

ce qui ressemblera à ceci :

dim ctrl as object
for each ctrl in me
if typeof ctrl is commandbutton then
ctrl.caption = cControls.item(ctrl.name)
elseif typeof ctrl is textbox then
ctrl.Text = cControls.item(ctrl.name)
else 'etc.... selon les types
endif
next ctrl
set ctrl = nothing


mais bien sûr comme dans ton énoncé tu as indiqué Textbox2 (au lieu de Text2, en VB6), tu es surement en VBA !!!


te reste donc à adapter le code que je viens d'indiquer, la syntaxe des types n'est pas la même !!!
(ah c'est peut-être pour çà qu'il y a des rubriques différentes dans les forums )

me semble d'ailleurs qu'en VBA on peut accéder à un élément depuis son nom.... simplifiant encore la tâche

++
[hr]
Messages postés
18
Date d'inscription
mercredi 1 avril 2009
Statut
Membre
Dernière intervention
23 décembre 2010

Merci pour vos réponse ca me sauve la mise je vais pouvoir avancer, la solution de dp_favresa marche nickel.

Merci beaucoup