EVALUATION D'EXPRESSION - FONCTION EVAL AVEC GESTION DE VARIABLES

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 - 25 juil. 2007 à 22:26
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 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.

https://codes-sources.commentcamarche.net/source/43566-evaluation-d-expression-fonction-eval-avec-gestion-de-variables

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
2 août 2007 à 15:16
vu sous cet angle...
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
2 août 2007 à 14:33
quelle formule as tu essayé ?

(je viens d'insérer sans soucis dans un VBA... :/)
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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és 395 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 19 juin 2009 1
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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
31 juil. 2007 à 16:25
si le besoin d'autres fonctions se fait sentir....

(prochainement, j'ajouterai la gestion de tableaux)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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ù

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)
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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és 395 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 19 juin 2009 1
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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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és 340 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 25 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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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és 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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és 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
25 juil. 2007 à 22:26
Que dire... toujours aussi bien organisé ;-p
Rejoignez-nous