Utiliser une methode dont le nom se trouve dans une variable

freedom73 Messages postés 2 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 2 décembre 2007 - 2 déc. 2007 à 14:21
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 2 déc. 2007 à 16:37
Bonjour

je recherche comment pourvoir utiliser une variable (et accessoirement une procedure) dont son nom se trouve dans une chaine de caractere.

je m'explique:

j'ai cree une structure constituée de plusieurs éléménts. Cette struture est destinée à definir les informations de differents "objets" a differents moment.

Les noms des objets sont donc composé de son nom et du numero de l'etat dans lequel il se trouve : <nom objet><Num>

ex: je possede une liste d'objet de ce type

objet01
objet02
test01
test02
test03
essai01

j'ai cree une procedure qui suivant les informations en cours du logiciel definit "l'objet" et son numero d'etat

je met donc dans une variable strinf la chaine de caractere correspondant a "l"objet"

NomEnCours = <nom objet> & <Num>

exemple:
NomEnCours = "test" & "01"

une fois arrive la je suis bloque, je n'arrive pas a recuperé les valeurs de la structure de la forme

NomEnCours.valeur

je prevois d'utiliser la meme methode pour des procedures (oui je suis ce n'est pas super propre)

je pense qu'il doit exister une fonction ou une methode pour transformer la chaine de caractere en nom de variable mais je n'arrive pas à la trouver

merci d'avance
freedom73

3 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
2 déc. 2007 à 14:51
Bonjour,

Non ! Tu ne peux te référer à une variable en utilisant une chaîne de caractères ...

VB tient, de façon interne, une relation (avec VarPtr) de l'adresse de chaque variable à chaque niveau (procédure, etc...)

Mais toi, tu ne peux utiliser cette relation car le nom (en string) de la variable concernée pourrait, entre autres, être le même pour plusieurs variables !

La pruve (s'il en faut) ?

La voilà :

Option Explicit
Private toto As Object





' on voit bien que le même nom est finalement attribué à 2 variables fort différentes



Private Sub Form_Load()
  Set toto = Me
End Sub



Private Sub Command1_Click()
  Dim toto As Integer
  toto = 10
  MsgBox Val(toto) * 2
End Sub



Private Sub Command2_Click()
  MsgBox toto.Name
End Sub


A quelle variable toto te réfèrerais-tu à l'aide de la chaîne "toto", hein ?...

conclusion : abandonne ton idée; à moins de constituer (lourd) au sein de ton appli, un tableau perso de correspondance de chaînes et de variables. 
0
freedom73 Messages postés 2 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 2 décembre 2007
2 déc. 2007 à 16:10
Bonjour

j'esperais qu'il y avais une instruction permettant de dire "lancer le code dans la chaine de caractere". un peu comme en dos avec les caracteres speciaux %.variable%

si cela n'est pas possible je vais alors alourdir mon application en multipliant les if ... then

merci encore pour la reponse rapide
freedom73
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
2 déc. 2007 à 16:37
salut,

faut vraiment en avoir l'utilité mais c'est plus ou moins possible pour des procédures, fonctions, méthodes et propriétés. pas des variables!! :

'   FORM1
Option Explicit

Private Const CONST_FuncName As String = "GetVarCoeff"

Private Sub Form_Load()
    Form2.Show
End Sub

Private Sub Command1_Click()
    MsgBox CallByName(Form2, CONST_FuncName, VbMethod, 20.07)
End Sub

'------------------------------

'   FORM 2
Option Explicit

Public lVar As Long

Private Sub Form_Load()
    lVar = 100
End Sub

Public Function GetVarCoeff(iCo As Currency) As Currency
    GetVarCoeff = lVar * iCo
End Function

++
PCPT   [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
Rejoignez-nous