EVALUATION D'EXPRESSION - FONCTION EVAL AVEC GESTION DE VARIABLES
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 2019
-
25 juil. 2007 à 22:26
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
2 août 2007 à 15:16
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 2 août 2007 à 15:16
vu sous cet angle...
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 2 août 2007 à 15:05
Laisse tomber, c'est moi qui suis un abruti... :$
Je pensais pas que c'était toi qui l'avais codé, mais que ça faisait parti du paramètre des 'fonctions vb' !!
Donc testé sans tes classes..
(et ouais, j'ai pas 'tout' lu dans tes classes, t'es trop fort pour moi) ;)
Enfin, puisses-tu me pardonner !
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 2 août 2007 à 14:36
Pour info, j'ai mis ca, après avoir ajouté les quatre fichiers .cls dans mon xls :
Public Function DonneResultat() As Variant
Dim oScript As CTinyScript
Set oScript = New CTinyScript
DonneResultat = oScript.Evaluate(InputBox("Formule a calculer : "))
End Function
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 2 août 2007 à 14:33
quelle formule as tu essayé ?
(je viens d'insérer sans soucis dans un VBA... :/)
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 2 août 2007 à 14:28
Salut Rey,
merci pour tes explications (bien que je me doutais du résultat).
Mais rien à faire (et sur un autre pc que le mien), en vba, passe pas !
J'essaierai avec vb6 ;)
cs_nico1610
Messages postés395Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention19 juin 20091 31 juil. 2007 à 20:39
Il est vrai que python fait la chose, mais a l'origine c'est quand même une idée php assez pratique, j'avais même l'intention un moment de refaire les fonctions de gestion des chaines de caractère Php en VB car elle sont vraiment sympa à utiliser !
Pour le SubStr php : http://fr.php.net/manual/fr/function.substr.php Sur le panneau de gauche tu as les autres fonctions de traitement des chaines de caractère, en fouillant dedans on trouve des perles !
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 31 juil. 2007 à 16:25
si le besoin d'autres fonctions se fait sentir....
(prochainement, j'ajouterai la gestion de tableaux)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 31 juil. 2007 à 16:22
voilà, j'ai patché en ajoutant des On Error au niveau des appels a ces fonctions de chaine
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 31 juil. 2007 à 16:16
une erreur ???
étrange :/ surement une valeur en dehors de la range autorisée... vais mettre un On Error au cas où
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 31 juil. 2007 à 15:08
Salut Rey,
ça fait quoi une valeur négative dans ces fonctions ?
viens de tester (avec vba d'excel, pas vb6 sur ce pc), bah j'ai une erreur :(
merci ;)
++
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 31 juil. 2007 à 15:00
content que le code t'interesse, et que tu te soit donné la peine d'y jet un oeil.
oui, les [] dans les enumes, c'est pour pouvoir mettre des espaces et autres caractères.
Pour la valeur négative dans le Left, Right et Mid, c'est un truc que j'ai vu en Python, et que je trouve pratique
cs_nico1610
Messages postés395Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention19 juin 20091 31 juil. 2007 à 11:52
Super code, comme d'habitude, une facon de coder la chose.
Juste une question je comprend pas ca :
Le faite d'utilisé des [] dans tes Enum, c'est juste pour que VB accepte les espaces dans les variables ?
Sinon le Left("Osacr", -2) c'est bien trouvé, on croirai avoir du php avec un SubStr() ^^
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 31 juil. 2007 à 06:52
étrange qu'ils manquent, sont passés sous la vigilance de l'Option Explicit ?
(et me semblait qu'ils y étaient, surtout :/)
shadowmoy
Messages postés340Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention25 août 2007 30 juil. 2007 à 21:03
decares manquant pour le pb de Mortalino :
Dim sValue1 As Variant
Dim sbuffer As String
Dim sVarName As String
a ajouter dans la fonction Evaluate de la classe cparser
sinon c cool :)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 26 juil. 2007 à 21:08
ok pour ces variables, je ferai le ménage.
j'ai testé pas mal de cas, ca fonctionne pas trop mal... j'ajouterai peut etre la possibilité de créer des fonctions perso.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 26 juil. 2007 à 16:14
dans ta classe CParser, mztool me dit que oMemLexer & sOperation dans AddParent ne sont pas utilisés :$
Sinon, bah moi je suis obligé de virer l'Option Explicit car VB me donne un Msg d'erreur : Variable non définie, sur :
sBuffer =
(ligne 386, classe CParser)
Bizarre, d'autant plus que cette variable est bien déclarée !!
Mais je pense que mon VB souffre un peu en ce moment depuis que je l'ai subclassé, je le réinstallerai à l'occas
Sinon, bah c'est sympa, et comme d'hab, très bien codé ;)
++
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 26 juil. 2007 à 15:15
Quelques fonctions supplémentaires sont gérées.
toujours aussi peu de commentaire dans le code...
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 25 juil. 2007 à 22:26
2 août 2007 à 15:16
2 août 2007 à 15:05
Je pensais pas que c'était toi qui l'avais codé, mais que ça faisait parti du paramètre des 'fonctions vb' !!
Donc testé sans tes classes..
(et ouais, j'ai pas 'tout' lu dans tes classes, t'es trop fort pour moi) ;)
Enfin, puisses-tu me pardonner !
2 août 2007 à 14:36
Public Function DonneResultat() As Variant
Dim oScript As CTinyScript
Set oScript = New CTinyScript
DonneResultat = oScript.Evaluate(InputBox("Formule a calculer : "))
End Function
2 août 2007 à 14:33
(je viens d'insérer sans soucis dans un VBA... :/)
2 août 2007 à 14:28
merci pour tes explications (bien que je me doutais du résultat).
Mais rien à faire (et sur un autre pc que le mien), en vba, passe pas !
J'essaierai avec vb6 ;)
31 juil. 2007 à 20:39
Pour le SubStr php : http://fr.php.net/manual/fr/function.substr.php
Sur le panneau de gauche tu as les autres fonctions de traitement des chaines de caractère, en fouillant dedans on trouve des perles !
31 juil. 2007 à 16:25
(prochainement, j'ajouterai la gestion de tableaux)
31 juil. 2007 à 16:22
31 juil. 2007 à 16:16
étrange :/ surement une valeur en dehors de la range autorisée... vais mettre un On Error au cas où
Pour le négatif, en fait, ca part de la fin :
Left("Oscar",-2) => "Osc" (longeur-2)
Right("Oscar",-2) => "car" (longeur-2)
Mid("Australie",-5) => "ralie" (longeur-5)
Mid("Australie",-5,3) => "ral" (longeur-5)
31 juil. 2007 à 15:08
ça fait quoi une valeur négative dans ces fonctions ?
viens de tester (avec vba d'excel, pas vb6 sur ce pc), bah j'ai une erreur :(
merci ;)
++
31 juil. 2007 à 15:00
oui, les [] dans les enumes, c'est pour pouvoir mettre des espaces et autres caractères.
Pour la valeur négative dans le Left, Right et Mid, c'est un truc que j'ai vu en Python, et que je trouve pratique
31 juil. 2007 à 11:52
Juste une question je comprend pas ca :
Le faite d'utilisé des [] dans tes Enum, c'est juste pour que VB accepte les espaces dans les variables ?
Sinon le Left("Osacr", -2) c'est bien trouvé, on croirai avoir du php avec un SubStr() ^^
31 juil. 2007 à 06:52
(et me semblait qu'ils y étaient, surtout :/)
30 juil. 2007 à 21:03
Dim sValue1 As Variant
Dim sbuffer As String
Dim sVarName As String
a ajouter dans la fonction Evaluate de la classe cparser
sinon c cool :)
26 juil. 2007 à 21:08
j'ai testé pas mal de cas, ca fonctionne pas trop mal... j'ajouterai peut etre la possibilité de créer des fonctions perso.
26 juil. 2007 à 16:14
Sinon, bah moi je suis obligé de virer l'Option Explicit car VB me donne un Msg d'erreur : Variable non définie, sur :
sBuffer =
(ligne 386, classe CParser)
Bizarre, d'autant plus que cette variable est bien déclarée !!
Mais je pense que mon VB souffre un peu en ce moment depuis que je l'ai subclassé, je le réinstallerai à l'occas
Sinon, bah c'est sympa, et comme d'hab, très bien codé ;)
++
26 juil. 2007 à 15:15
toujours aussi peu de commentaire dans le code...
25 juil. 2007 à 22:26