eval() avec des variables

eval() avec des variables - VB/VBA/VBS - Programmation

Marsh Posté le 13-07-2007 à 11:21:19    

Hello à tous
 
  je fais du vba access, (mais dans excel ca serait le meme pb je pense)
  je recupere dans une table une formule mathématique, du genre "larg + 10"
 
  et je souhaite pouvoir executer un code de ce genre :

  dim larg as integer
  dim formule as string
  formule = "larg + 10 "           ' c'est une requete sql qui recupere larg + 10 --  
 
  larg = 100
  msgbox (eval(formule))


et je souhaite que ca machine 110 , mais ca marche pas. j'obtient cette erreur : "impossible de trouver le nom 'larg' entré dans l'expression
 
 
des idées ?
 
merci


Message édité par PierreC le 13-07-2007 à 11:21:36
Reply

Marsh Posté le 13-07-2007 à 11:21:19   

Reply

Marsh Posté le 13-07-2007 à 11:44:16    

j'ai une solution mais j'ai besoin d'avoir votre avis.  
 

function larg() as string
  larg= 100
end function
 
sub main()
 
  dim formule as string
 
  formule = "larg() + 10"       ' c'est une requete sql qui recupere larg() + 10    
  msgbox (eval(formule))
 
end sub


 
je voudrais donc savoir si ca va etre stable une fois en production ce truc ?


---------------
Du tofu en Alsace : www.tofuhong.com
Reply

Marsh Posté le 13-07-2007 à 13:41:29    

« (mais dans excel ca serait le meme pb je pense)  »
Raté, Eval est une fonction spécifique à MS Access et n'est pas accessible dans Excel (pas directement en tout cas sans faire appel à des bibliothèques dédiées).
 
Sinon, Eval ne sait pas interpréter les variables locales et globales contenues dans son paramètre (pas comme en php).
Il faut donc jouer avec les concaténations :
Dim larg As Long
Dim sLarg as String
larg = 100
sLarg = Cstr(larg)
debug.print Eval(sLarg & "+1" )
 
Voir l'aide en ligne...

Reply

Marsh Posté le 13-07-2007 à 15:40:35    

c'est bien ce dont j'avais peur ...
 
merci


---------------
Du tofu en Alsace : www.tofuhong.com
Reply

Sujets relatifs:

Leave a Replay

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