Bonjour à tous,
J'essaye d'évaluer une expression du type :
string1 = string2
Bizarrement, ça fonctionne parfaitement lorsque les 2 valeurs sont des
nombres, mais pas quand ce sont des chaines de caractère.
Voici ci-dessous un exemple lorsque ça fonctionne.
Je suis sous W2000 avec Excel 2002 (SP2).
J'ai ajouté Microsoft Script Control 1.0 dans le projet et j'ai
déclaré au début de mon module la fonction suivante :
<<<<<<<<<<<<<<<<
Public Function Eval(ByVal strExpression As String) As Variant
Dim objScript As New ScriptControl
objScript.Language = "VBScript"
Eval = objScript.Eval(strExpression)
End Function
Ensuite, j'écris cela dans ma procédure :
<<<<<<<<<<<<<<<<
A = "3"
B = "4"
operateur = " = "
resultat = Eval(A & operateur & B)
msgbox ("Resultat=" & resultat)
A l'execution, le résultat est "FALSE" -> OK
Mais lorsque je remplace A et B par des chaines de caractères et que
cela ne plante pas, le résultat est toujours "TRUE".
Car cela peut aussi planter en générant une erreur de type "run-time
error '1002'" (l'exécution du code s'arrête alors sur l'expression de
sortie de la fonction -> Eval = objScript...) lorsque l'une des deux
chaines de caractère A ou B commence par un nombre (comme par exemple
A = "2a").
J'ajoute que lorsque je supprime la variable relative à l'opérateur,
cela fonctionne parfaitement :
<<<<<<<<<<<<<<<<
resultat = Eval(A = B)
Bien évidemment, j'ai besoin de conserver cette variable dans le cadre
de mon application.
Je me suis dit que j'avais peut-être oublié d'introduire des fonctions
de conversion comme 'CBool' ou 'CStr' mais je ne m'en suis pas sorti.
Je vous remercie par avance pour vos suggestions.
Stéphane
Bonjour à tous,
J'essaye d'évaluer une expression du type :
string1 = string2
Bizarrement, ça fonctionne parfaitement lorsque les 2 valeurs sont des
nombres, mais pas quand ce sont des chaines de caractère.
Voici ci-dessous un exemple lorsque ça fonctionne.
Je suis sous W2000 avec Excel 2002 (SP2).
J'ai ajouté Microsoft Script Control 1.0 dans le projet et j'ai
déclaré au début de mon module la fonction suivante :
<<<<<<<<<<<<<<<<
Public Function Eval(ByVal strExpression As String) As Variant
Dim objScript As New ScriptControl
objScript.Language = "VBScript"
Eval = objScript.Eval(strExpression)
End Function
Ensuite, j'écris cela dans ma procédure :
<<<<<<<<<<<<<<<<
A = "3"
B = "4"
operateur = " = "
resultat = Eval(A & operateur & B)
msgbox ("Resultat=" & resultat)
A l'execution, le résultat est "FALSE" -> OK
Mais lorsque je remplace A et B par des chaines de caractères et que
cela ne plante pas, le résultat est toujours "TRUE".
Car cela peut aussi planter en générant une erreur de type "run-time
error '1002'" (l'exécution du code s'arrête alors sur l'expression de
sortie de la fonction -> Eval = objScript...) lorsque l'une des deux
chaines de caractère A ou B commence par un nombre (comme par exemple
A = "2a").
J'ajoute que lorsque je supprime la variable relative à l'opérateur,
cela fonctionne parfaitement :
<<<<<<<<<<<<<<<<
resultat = Eval(A = B)
Bien évidemment, j'ai besoin de conserver cette variable dans le cadre
de mon application.
Je me suis dit que j'avais peut-être oublié d'introduire des fonctions
de conversion comme 'CBool' ou 'CStr' mais je ne m'en suis pas sorti.
Je vous remercie par avance pour vos suggestions.
Stéphane
Bonjour à tous,
J'essaye d'évaluer une expression du type :
string1 = string2
Bizarrement, ça fonctionne parfaitement lorsque les 2 valeurs sont des
nombres, mais pas quand ce sont des chaines de caractère.
Voici ci-dessous un exemple lorsque ça fonctionne.
Je suis sous W2000 avec Excel 2002 (SP2).
J'ai ajouté Microsoft Script Control 1.0 dans le projet et j'ai
déclaré au début de mon module la fonction suivante :
<<<<<<<<<<<<<<<<
Public Function Eval(ByVal strExpression As String) As Variant
Dim objScript As New ScriptControl
objScript.Language = "VBScript"
Eval = objScript.Eval(strExpression)
End Function
Ensuite, j'écris cela dans ma procédure :
<<<<<<<<<<<<<<<<
A = "3"
B = "4"
operateur = " = "
resultat = Eval(A & operateur & B)
msgbox ("Resultat=" & resultat)
A l'execution, le résultat est "FALSE" -> OK
Mais lorsque je remplace A et B par des chaines de caractères et que
cela ne plante pas, le résultat est toujours "TRUE".
Car cela peut aussi planter en générant une erreur de type "run-time
error '1002'" (l'exécution du code s'arrête alors sur l'expression de
sortie de la fonction -> Eval = objScript...) lorsque l'une des deux
chaines de caractère A ou B commence par un nombre (comme par exemple
A = "2a").
J'ajoute que lorsque je supprime la variable relative à l'opérateur,
cela fonctionne parfaitement :
<<<<<<<<<<<<<<<<
resultat = Eval(A = B)
Bien évidemment, j'ai besoin de conserver cette variable dans le cadre
de mon application.
Je me suis dit que j'avais peut-être oublié d'introduire des fonctions
de conversion comme 'CBool' ou 'CStr' mais je ne m'en suis pas sorti.
Je vous remercie par avance pour vos suggestions.
Stéphane
Bjr,
Et si tu disais à Eval que tu utilises du texte en ajoutant des guillemets?
Exemple (non testé):
A = """Albert"""
B = """Gustave"""
operateur = " = "
resultat = Eval(A & operateur & B)
msgbox ("Resultat=" & resultat)
Pascal B.
"rederon" wrote in message news:
| Bonjour à tous,
|
| J'essaye d'évaluer une expression du type :
| string1 = string2
|
| Bizarrement, ça fonctionne parfaitement lorsque les 2 valeurs sont des
| nombres, mais pas quand ce sont des chaines de caractère.
|
| Voici ci-dessous un exemple lorsque ça fonctionne.
| Je suis sous W2000 avec Excel 2002 (SP2).
| J'ai ajouté Microsoft Script Control 1.0 dans le projet et j'ai
| déclaré au début de mon module la fonction suivante :
|
| <<<<<<<<<<<<<<<<
| Public Function Eval(ByVal strExpression As String) As Variant
| Dim objScript As New ScriptControl
|
| objScript.Language = "VBScript"
| Eval = objScript.Eval(strExpression)
|
| End Function
| >>>>>>>>>>>>>>>>
|
| Ensuite, j'écris cela dans ma procédure :
|
| <<<<<<<<<<<<<<<<
| A = "3"
| B = "4"
| operateur = " = "
| resultat = Eval(A & operateur & B)
| msgbox ("Resultat=" & resultat)
| >>>>>>>>>>>>>>>>
|
| A l'execution, le résultat est "FALSE" -> OK
|
| Mais lorsque je remplace A et B par des chaines de caractères et que
| cela ne plante pas, le résultat est toujours "TRUE".
|
| Car cela peut aussi planter en générant une erreur de type "run-time
| error '1002'" (l'exécution du code s'arrête alors sur l'expression de
| sortie de la fonction -> Eval = objScript...) lorsque l'une des deux
| chaines de caractère A ou B commence par un nombre (comme par exemple
| A = "2a").
|
| J'ajoute que lorsque je supprime la variable relative à l'opérateur,
| cela fonctionne parfaitement :
| <<<<<<<<<<<<<<<<
| resultat = Eval(A = B)
| >>>>>>>>>>>>>>>>
| Bien évidemment, j'ai besoin de conserver cette variable dans le cadre
| de mon application.
|
| Je me suis dit que j'avais peut-être oublié d'introduire des fonctions
| de conversion comme 'CBool' ou 'CStr' mais je ne m'en suis pas sorti.
|
| Je vous remercie par avance pour vos suggestions.
|
| Stéphane
Bjr,
Et si tu disais à Eval que tu utilises du texte en ajoutant des guillemets?
Exemple (non testé):
A = """Albert"""
B = """Gustave"""
operateur = " = "
resultat = Eval(A & operateur & B)
msgbox ("Resultat=" & resultat)
Pascal B.
"rederon" <rederon@free.fr> wrote in message news:17df31ab.0411220806.7e71593c@posting.google.com...
| Bonjour à tous,
|
| J'essaye d'évaluer une expression du type :
| string1 = string2
|
| Bizarrement, ça fonctionne parfaitement lorsque les 2 valeurs sont des
| nombres, mais pas quand ce sont des chaines de caractère.
|
| Voici ci-dessous un exemple lorsque ça fonctionne.
| Je suis sous W2000 avec Excel 2002 (SP2).
| J'ai ajouté Microsoft Script Control 1.0 dans le projet et j'ai
| déclaré au début de mon module la fonction suivante :
|
| <<<<<<<<<<<<<<<<
| Public Function Eval(ByVal strExpression As String) As Variant
| Dim objScript As New ScriptControl
|
| objScript.Language = "VBScript"
| Eval = objScript.Eval(strExpression)
|
| End Function
| >>>>>>>>>>>>>>>>
|
| Ensuite, j'écris cela dans ma procédure :
|
| <<<<<<<<<<<<<<<<
| A = "3"
| B = "4"
| operateur = " = "
| resultat = Eval(A & operateur & B)
| msgbox ("Resultat=" & resultat)
| >>>>>>>>>>>>>>>>
|
| A l'execution, le résultat est "FALSE" -> OK
|
| Mais lorsque je remplace A et B par des chaines de caractères et que
| cela ne plante pas, le résultat est toujours "TRUE".
|
| Car cela peut aussi planter en générant une erreur de type "run-time
| error '1002'" (l'exécution du code s'arrête alors sur l'expression de
| sortie de la fonction -> Eval = objScript...) lorsque l'une des deux
| chaines de caractère A ou B commence par un nombre (comme par exemple
| A = "2a").
|
| J'ajoute que lorsque je supprime la variable relative à l'opérateur,
| cela fonctionne parfaitement :
| <<<<<<<<<<<<<<<<
| resultat = Eval(A = B)
| >>>>>>>>>>>>>>>>
| Bien évidemment, j'ai besoin de conserver cette variable dans le cadre
| de mon application.
|
| Je me suis dit que j'avais peut-être oublié d'introduire des fonctions
| de conversion comme 'CBool' ou 'CStr' mais je ne m'en suis pas sorti.
|
| Je vous remercie par avance pour vos suggestions.
|
| Stéphane
Bjr,
Et si tu disais à Eval que tu utilises du texte en ajoutant des guillemets?
Exemple (non testé):
A = """Albert"""
B = """Gustave"""
operateur = " = "
resultat = Eval(A & operateur & B)
msgbox ("Resultat=" & resultat)
Pascal B.
"rederon" wrote in message news:
| Bonjour à tous,
|
| J'essaye d'évaluer une expression du type :
| string1 = string2
|
| Bizarrement, ça fonctionne parfaitement lorsque les 2 valeurs sont des
| nombres, mais pas quand ce sont des chaines de caractère.
|
| Voici ci-dessous un exemple lorsque ça fonctionne.
| Je suis sous W2000 avec Excel 2002 (SP2).
| J'ai ajouté Microsoft Script Control 1.0 dans le projet et j'ai
| déclaré au début de mon module la fonction suivante :
|
| <<<<<<<<<<<<<<<<
| Public Function Eval(ByVal strExpression As String) As Variant
| Dim objScript As New ScriptControl
|
| objScript.Language = "VBScript"
| Eval = objScript.Eval(strExpression)
|
| End Function
| >>>>>>>>>>>>>>>>
|
| Ensuite, j'écris cela dans ma procédure :
|
| <<<<<<<<<<<<<<<<
| A = "3"
| B = "4"
| operateur = " = "
| resultat = Eval(A & operateur & B)
| msgbox ("Resultat=" & resultat)
| >>>>>>>>>>>>>>>>
|
| A l'execution, le résultat est "FALSE" -> OK
|
| Mais lorsque je remplace A et B par des chaines de caractères et que
| cela ne plante pas, le résultat est toujours "TRUE".
|
| Car cela peut aussi planter en générant une erreur de type "run-time
| error '1002'" (l'exécution du code s'arrête alors sur l'expression de
| sortie de la fonction -> Eval = objScript...) lorsque l'une des deux
| chaines de caractère A ou B commence par un nombre (comme par exemple
| A = "2a").
|
| J'ajoute que lorsque je supprime la variable relative à l'opérateur,
| cela fonctionne parfaitement :
| <<<<<<<<<<<<<<<<
| resultat = Eval(A = B)
| >>>>>>>>>>>>>>>>
| Bien évidemment, j'ai besoin de conserver cette variable dans le cadre
| de mon application.
|
| Je me suis dit que j'avais peut-être oublié d'introduire des fonctions
| de conversion comme 'CBool' ou 'CStr' mais je ne m'en suis pas sorti.
|
| Je vous remercie par avance pour vos suggestions.
|
| Stéphane
Salut,
Pourquoi tiens tu à évaluer des chaines de caracères ainsi ?
Que répresentent t-elles ?
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
rederon wrote:
> Bonjour à tous,
>
> J'essaye d'évaluer une expression du type :
> string1 = string2
>
> Bizarrement, ça fonctionne parfaitement lorsque les 2 valeurs sont des
> nombres, mais pas quand ce sont des chaines de caractère.
>
> Voici ci-dessous un exemple lorsque ça fonctionne.
> Je suis sous W2000 avec Excel 2002 (SP2).
> J'ai ajouté Microsoft Script Control 1.0 dans le projet et j'ai
> déclaré au début de mon module la fonction suivante :
>
> <<<<<<<<<<<<<<<<
> Public Function Eval(ByVal strExpression As String) As Variant
> Dim objScript As New ScriptControl
>
> objScript.Language = "VBScript"
> Eval = objScript.Eval(strExpression)
>
> End Function
>>>>>>>>>>>>>>>>>
>
> Ensuite, j'écris cela dans ma procédure :
>
> <<<<<<<<<<<<<<<<
> A = "3"
> B = "4"
> operateur = " = "
> resultat = Eval(A & operateur & B)
> msgbox ("Resultat=" & resultat)
>>>>>>>>>>>>>>>>>
>
> A l'execution, le résultat est "FALSE" -> OK
>
> Mais lorsque je remplace A et B par des chaines de caractères et que
> cela ne plante pas, le résultat est toujours "TRUE".
>
> Car cela peut aussi planter en générant une erreur de type "run-time
> error '1002'" (l'exécution du code s'arrête alors sur l'expression de
> sortie de la fonction -> Eval = objScript...) lorsque l'une des deux
> chaines de caractère A ou B commence par un nombre (comme par exemple
> A = "2a").
>
> J'ajoute que lorsque je supprime la variable relative à l'opérateur,
> cela fonctionne parfaitement :
> <<<<<<<<<<<<<<<<
> resultat = Eval(A = B)
>>>>>>>>>>>>>>>>>
> Bien évidemment, j'ai besoin de conserver cette variable dans le cadre
> de mon application.
>
> Je me suis dit que j'avais peut-être oublié d'introduire des fonctions
> de conversion comme 'CBool' ou 'CStr' mais je ne m'en suis pas sorti.
>
> Je vous remercie par avance pour vos suggestions.
>
> Stéphane
Salut,
Pourquoi tiens tu à évaluer des chaines de caracères ainsi ?
Que répresentent t-elles ?
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
rederon wrote:
> Bonjour à tous,
>
> J'essaye d'évaluer une expression du type :
> string1 = string2
>
> Bizarrement, ça fonctionne parfaitement lorsque les 2 valeurs sont des
> nombres, mais pas quand ce sont des chaines de caractère.
>
> Voici ci-dessous un exemple lorsque ça fonctionne.
> Je suis sous W2000 avec Excel 2002 (SP2).
> J'ai ajouté Microsoft Script Control 1.0 dans le projet et j'ai
> déclaré au début de mon module la fonction suivante :
>
> <<<<<<<<<<<<<<<<
> Public Function Eval(ByVal strExpression As String) As Variant
> Dim objScript As New ScriptControl
>
> objScript.Language = "VBScript"
> Eval = objScript.Eval(strExpression)
>
> End Function
>>>>>>>>>>>>>>>>>
>
> Ensuite, j'écris cela dans ma procédure :
>
> <<<<<<<<<<<<<<<<
> A = "3"
> B = "4"
> operateur = " = "
> resultat = Eval(A & operateur & B)
> msgbox ("Resultat=" & resultat)
>>>>>>>>>>>>>>>>>
>
> A l'execution, le résultat est "FALSE" -> OK
>
> Mais lorsque je remplace A et B par des chaines de caractères et que
> cela ne plante pas, le résultat est toujours "TRUE".
>
> Car cela peut aussi planter en générant une erreur de type "run-time
> error '1002'" (l'exécution du code s'arrête alors sur l'expression de
> sortie de la fonction -> Eval = objScript...) lorsque l'une des deux
> chaines de caractère A ou B commence par un nombre (comme par exemple
> A = "2a").
>
> J'ajoute que lorsque je supprime la variable relative à l'opérateur,
> cela fonctionne parfaitement :
> <<<<<<<<<<<<<<<<
> resultat = Eval(A = B)
>>>>>>>>>>>>>>>>>
> Bien évidemment, j'ai besoin de conserver cette variable dans le cadre
> de mon application.
>
> Je me suis dit que j'avais peut-être oublié d'introduire des fonctions
> de conversion comme 'CBool' ou 'CStr' mais je ne m'en suis pas sorti.
>
> Je vous remercie par avance pour vos suggestions.
>
> Stéphane
Salut,
Pourquoi tiens tu à évaluer des chaines de caracères ainsi ?
Que répresentent t-elles ?
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
rederon wrote:
> Bonjour à tous,
>
> J'essaye d'évaluer une expression du type :
> string1 = string2
>
> Bizarrement, ça fonctionne parfaitement lorsque les 2 valeurs sont des
> nombres, mais pas quand ce sont des chaines de caractère.
>
> Voici ci-dessous un exemple lorsque ça fonctionne.
> Je suis sous W2000 avec Excel 2002 (SP2).
> J'ai ajouté Microsoft Script Control 1.0 dans le projet et j'ai
> déclaré au début de mon module la fonction suivante :
>
> <<<<<<<<<<<<<<<<
> Public Function Eval(ByVal strExpression As String) As Variant
> Dim objScript As New ScriptControl
>
> objScript.Language = "VBScript"
> Eval = objScript.Eval(strExpression)
>
> End Function
>>>>>>>>>>>>>>>>>
>
> Ensuite, j'écris cela dans ma procédure :
>
> <<<<<<<<<<<<<<<<
> A = "3"
> B = "4"
> operateur = " = "
> resultat = Eval(A & operateur & B)
> msgbox ("Resultat=" & resultat)
>>>>>>>>>>>>>>>>>
>
> A l'execution, le résultat est "FALSE" -> OK
>
> Mais lorsque je remplace A et B par des chaines de caractères et que
> cela ne plante pas, le résultat est toujours "TRUE".
>
> Car cela peut aussi planter en générant une erreur de type "run-time
> error '1002'" (l'exécution du code s'arrête alors sur l'expression de
> sortie de la fonction -> Eval = objScript...) lorsque l'une des deux
> chaines de caractère A ou B commence par un nombre (comme par exemple
> A = "2a").
>
> J'ajoute que lorsque je supprime la variable relative à l'opérateur,
> cela fonctionne parfaitement :
> <<<<<<<<<<<<<<<<
> resultat = Eval(A = B)
>>>>>>>>>>>>>>>>>
> Bien évidemment, j'ai besoin de conserver cette variable dans le cadre
> de mon application.
>
> Je me suis dit que j'avais peut-être oublié d'introduire des fonctions
> de conversion comme 'CBool' ou 'CStr' mais je ne m'en suis pas sorti.
>
> Je vous remercie par avance pour vos suggestions.
>
> Stéphane
Le but est d'évaluer une chaine de caractère beaucoup plus complexe
que celle que j'ai présenté dans l'example ci-dessous.
L'application finale me permettra de faire une fonction de filtre et
de tri évolués (avec plus de 2 valeurs comme c'est le cas avec les
fonctions de Excel) et customisable par l'opérateur (avec des
opérateurs conditionnels comme =, >, <, >=, <=, Like, etc...).
Mais je butais sur la façon d'intégrer l'opérateur en passant par une
variable.
"ng" wrote in message
news:...Salut,
Pourquoi tiens tu à évaluer des chaines de caracères ainsi ?
Que répresentent t-elles ?
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
rederon wrote:Bonjour à tous,
J'essaye d'évaluer une expression du type :
string1 = string2
Bizarrement, ça fonctionne parfaitement lorsque les 2 valeurs sont
des nombres, mais pas quand ce sont des chaines de caractère.
Voici ci-dessous un exemple lorsque ça fonctionne.
Je suis sous W2000 avec Excel 2002 (SP2).
J'ai ajouté Microsoft Script Control 1.0 dans le projet et j'ai
déclaré au début de mon module la fonction suivante :
<<<<<<<<<<<<<<<<
Public Function Eval(ByVal strExpression As String) As Variant
Dim objScript As New ScriptControl
objScript.Language = "VBScript"
Eval = objScript.Eval(strExpression)
End Function
Ensuite, j'écris cela dans ma procédure :
<<<<<<<<<<<<<<<<
A = "3"
B = "4"
operateur = " = "
resultat = Eval(A & operateur & B)
msgbox ("Resultat=" & resultat)
A l'execution, le résultat est "FALSE" -> OK
Mais lorsque je remplace A et B par des chaines de caractères et que
cela ne plante pas, le résultat est toujours "TRUE".
Car cela peut aussi planter en générant une erreur de type "run-time
error '1002'" (l'exécution du code s'arrête alors sur l'expression
de sortie de la fonction -> Eval = objScript...) lorsque l'une des
deux chaines de caractère A ou B commence par un nombre (comme par
exemple A = "2a").
J'ajoute que lorsque je supprime la variable relative à l'opérateur,
cela fonctionne parfaitement :
<<<<<<<<<<<<<<<<
resultat = Eval(A = B)
Bien évidemment, j'ai besoin de conserver cette variable dans le
cadre de mon application.
Je me suis dit que j'avais peut-être oublié d'introduire des
fonctions de conversion comme 'CBool' ou 'CStr' mais je ne m'en
suis pas sorti.
Je vous remercie par avance pour vos suggestions.
Stéphane
Le but est d'évaluer une chaine de caractère beaucoup plus complexe
que celle que j'ai présenté dans l'example ci-dessous.
L'application finale me permettra de faire une fonction de filtre et
de tri évolués (avec plus de 2 valeurs comme c'est le cas avec les
fonctions de Excel) et customisable par l'opérateur (avec des
opérateurs conditionnels comme =, >, <, >=, <=, Like, etc...).
Mais je butais sur la façon d'intégrer l'opérateur en passant par une
variable.
"ng" <ng@ngsoft-fr.com> wrote in message
news:<eSPn8AL0EHA.1524@TK2MSFTNGP09.phx.gbl>...
Salut,
Pourquoi tiens tu à évaluer des chaines de caracères ainsi ?
Que répresentent t-elles ?
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
rederon wrote:
Bonjour à tous,
J'essaye d'évaluer une expression du type :
string1 = string2
Bizarrement, ça fonctionne parfaitement lorsque les 2 valeurs sont
des nombres, mais pas quand ce sont des chaines de caractère.
Voici ci-dessous un exemple lorsque ça fonctionne.
Je suis sous W2000 avec Excel 2002 (SP2).
J'ai ajouté Microsoft Script Control 1.0 dans le projet et j'ai
déclaré au début de mon module la fonction suivante :
<<<<<<<<<<<<<<<<
Public Function Eval(ByVal strExpression As String) As Variant
Dim objScript As New ScriptControl
objScript.Language = "VBScript"
Eval = objScript.Eval(strExpression)
End Function
Ensuite, j'écris cela dans ma procédure :
<<<<<<<<<<<<<<<<
A = "3"
B = "4"
operateur = " = "
resultat = Eval(A & operateur & B)
msgbox ("Resultat=" & resultat)
A l'execution, le résultat est "FALSE" -> OK
Mais lorsque je remplace A et B par des chaines de caractères et que
cela ne plante pas, le résultat est toujours "TRUE".
Car cela peut aussi planter en générant une erreur de type "run-time
error '1002'" (l'exécution du code s'arrête alors sur l'expression
de sortie de la fonction -> Eval = objScript...) lorsque l'une des
deux chaines de caractère A ou B commence par un nombre (comme par
exemple A = "2a").
J'ajoute que lorsque je supprime la variable relative à l'opérateur,
cela fonctionne parfaitement :
<<<<<<<<<<<<<<<<
resultat = Eval(A = B)
Bien évidemment, j'ai besoin de conserver cette variable dans le
cadre de mon application.
Je me suis dit que j'avais peut-être oublié d'introduire des
fonctions de conversion comme 'CBool' ou 'CStr' mais je ne m'en
suis pas sorti.
Je vous remercie par avance pour vos suggestions.
Stéphane
Le but est d'évaluer une chaine de caractère beaucoup plus complexe
que celle que j'ai présenté dans l'example ci-dessous.
L'application finale me permettra de faire une fonction de filtre et
de tri évolués (avec plus de 2 valeurs comme c'est le cas avec les
fonctions de Excel) et customisable par l'opérateur (avec des
opérateurs conditionnels comme =, >, <, >=, <=, Like, etc...).
Mais je butais sur la façon d'intégrer l'opérateur en passant par une
variable.
"ng" wrote in message
news:...Salut,
Pourquoi tiens tu à évaluer des chaines de caracères ainsi ?
Que répresentent t-elles ?
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
rederon wrote:Bonjour à tous,
J'essaye d'évaluer une expression du type :
string1 = string2
Bizarrement, ça fonctionne parfaitement lorsque les 2 valeurs sont
des nombres, mais pas quand ce sont des chaines de caractère.
Voici ci-dessous un exemple lorsque ça fonctionne.
Je suis sous W2000 avec Excel 2002 (SP2).
J'ai ajouté Microsoft Script Control 1.0 dans le projet et j'ai
déclaré au début de mon module la fonction suivante :
<<<<<<<<<<<<<<<<
Public Function Eval(ByVal strExpression As String) As Variant
Dim objScript As New ScriptControl
objScript.Language = "VBScript"
Eval = objScript.Eval(strExpression)
End Function
Ensuite, j'écris cela dans ma procédure :
<<<<<<<<<<<<<<<<
A = "3"
B = "4"
operateur = " = "
resultat = Eval(A & operateur & B)
msgbox ("Resultat=" & resultat)
A l'execution, le résultat est "FALSE" -> OK
Mais lorsque je remplace A et B par des chaines de caractères et que
cela ne plante pas, le résultat est toujours "TRUE".
Car cela peut aussi planter en générant une erreur de type "run-time
error '1002'" (l'exécution du code s'arrête alors sur l'expression
de sortie de la fonction -> Eval = objScript...) lorsque l'une des
deux chaines de caractère A ou B commence par un nombre (comme par
exemple A = "2a").
J'ajoute que lorsque je supprime la variable relative à l'opérateur,
cela fonctionne parfaitement :
<<<<<<<<<<<<<<<<
resultat = Eval(A = B)
Bien évidemment, j'ai besoin de conserver cette variable dans le
cadre de mon application.
Je me suis dit que j'avais peut-être oublié d'introduire des
fonctions de conversion comme 'CBool' ou 'CStr' mais je ne m'en
suis pas sorti.
Je vous remercie par avance pour vos suggestions.
Stéphane
> savais pas si t'es chaines étaient censées representer des variables
Salut,
Ok, dans ce cas il faut en effet utiliser des guillements (car je
savais pas si t'es chaines étaient censées representer des variables
ou simplement un chaine fixe) comme te l'as dit Pascal.
rederon wrote:Le but est d'évaluer une chaine de caractère beaucoup plus complexe
que celle que j'ai présenté dans l'example ci-dessous.
L'application finale me permettra de faire une fonction de filtre et
de tri évolués (avec plus de 2 valeurs comme c'est le cas avec les
fonctions de Excel) et customisable par l'opérateur (avec des
opérateurs conditionnels comme =, >, <, >=, <=, Like, etc...).
Mais je butais sur la façon d'intégrer l'opérateur en passant par une
variable.
"ng" wrote in message
news:...Salut,
Pourquoi tiens tu à évaluer des chaines de caracères ainsi ?
Que répresentent t-elles ?
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
rederon wrote:Bonjour à tous,
J'essaye d'évaluer une expression du type :
string1 = string2
Bizarrement, ça fonctionne parfaitement lorsque les 2 valeurs sont
des nombres, mais pas quand ce sont des chaines de caractère.
Voici ci-dessous un exemple lorsque ça fonctionne.
Je suis sous W2000 avec Excel 2002 (SP2).
J'ai ajouté Microsoft Script Control 1.0 dans le projet et j'ai
déclaré au début de mon module la fonction suivante :
<<<<<<<<<<<<<<<<
Public Function Eval(ByVal strExpression As String) As Variant
Dim objScript As New ScriptControl
objScript.Language = "VBScript"
Eval = objScript.Eval(strExpression)
End Function
Ensuite, j'écris cela dans ma procédure :
<<<<<<<<<<<<<<<<
A = "3"
B = "4"
operateur = " = "
resultat = Eval(A & operateur & B)
msgbox ("Resultat=" & resultat)
A l'execution, le résultat est "FALSE" -> OK
Mais lorsque je remplace A et B par des chaines de caractères et
que cela ne plante pas, le résultat est toujours "TRUE".
Car cela peut aussi planter en générant une erreur de type
"run-time error '1002'" (l'exécution du code s'arrête alors sur
l'expression de sortie de la fonction -> Eval = objScript...)
lorsque l'une des deux chaines de caractère A ou B commence par un
nombre (comme par exemple A = "2a").
J'ajoute que lorsque je supprime la variable relative à
l'opérateur, cela fonctionne parfaitement :
<<<<<<<<<<<<<<<<
resultat = Eval(A = B)
Bien évidemment, j'ai besoin de conserver cette variable dans le
cadre de mon application.
Je me suis dit que j'avais peut-être oublié d'introduire des
fonctions de conversion comme 'CBool' ou 'CStr' mais je ne m'en
suis pas sorti.
Je vous remercie par avance pour vos suggestions.
Stéphane
> savais pas si t'es chaines étaient censées representer des variables
Salut,
Ok, dans ce cas il faut en effet utiliser des guillements (car je
savais pas si t'es chaines étaient censées representer des variables
ou simplement un chaine fixe) comme te l'as dit Pascal.
rederon wrote:
Le but est d'évaluer une chaine de caractère beaucoup plus complexe
que celle que j'ai présenté dans l'example ci-dessous.
L'application finale me permettra de faire une fonction de filtre et
de tri évolués (avec plus de 2 valeurs comme c'est le cas avec les
fonctions de Excel) et customisable par l'opérateur (avec des
opérateurs conditionnels comme =, >, <, >=, <=, Like, etc...).
Mais je butais sur la façon d'intégrer l'opérateur en passant par une
variable.
"ng" <ng@ngsoft-fr.com> wrote in message
news:<eSPn8AL0EHA.1524@TK2MSFTNGP09.phx.gbl>...
Salut,
Pourquoi tiens tu à évaluer des chaines de caracères ainsi ?
Que répresentent t-elles ?
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
rederon wrote:
Bonjour à tous,
J'essaye d'évaluer une expression du type :
string1 = string2
Bizarrement, ça fonctionne parfaitement lorsque les 2 valeurs sont
des nombres, mais pas quand ce sont des chaines de caractère.
Voici ci-dessous un exemple lorsque ça fonctionne.
Je suis sous W2000 avec Excel 2002 (SP2).
J'ai ajouté Microsoft Script Control 1.0 dans le projet et j'ai
déclaré au début de mon module la fonction suivante :
<<<<<<<<<<<<<<<<
Public Function Eval(ByVal strExpression As String) As Variant
Dim objScript As New ScriptControl
objScript.Language = "VBScript"
Eval = objScript.Eval(strExpression)
End Function
Ensuite, j'écris cela dans ma procédure :
<<<<<<<<<<<<<<<<
A = "3"
B = "4"
operateur = " = "
resultat = Eval(A & operateur & B)
msgbox ("Resultat=" & resultat)
A l'execution, le résultat est "FALSE" -> OK
Mais lorsque je remplace A et B par des chaines de caractères et
que cela ne plante pas, le résultat est toujours "TRUE".
Car cela peut aussi planter en générant une erreur de type
"run-time error '1002'" (l'exécution du code s'arrête alors sur
l'expression de sortie de la fonction -> Eval = objScript...)
lorsque l'une des deux chaines de caractère A ou B commence par un
nombre (comme par exemple A = "2a").
J'ajoute que lorsque je supprime la variable relative à
l'opérateur, cela fonctionne parfaitement :
<<<<<<<<<<<<<<<<
resultat = Eval(A = B)
Bien évidemment, j'ai besoin de conserver cette variable dans le
cadre de mon application.
Je me suis dit que j'avais peut-être oublié d'introduire des
fonctions de conversion comme 'CBool' ou 'CStr' mais je ne m'en
suis pas sorti.
Je vous remercie par avance pour vos suggestions.
Stéphane
> savais pas si t'es chaines étaient censées representer des variables
Salut,
Ok, dans ce cas il faut en effet utiliser des guillements (car je
savais pas si t'es chaines étaient censées representer des variables
ou simplement un chaine fixe) comme te l'as dit Pascal.
rederon wrote:Le but est d'évaluer une chaine de caractère beaucoup plus complexe
que celle que j'ai présenté dans l'example ci-dessous.
L'application finale me permettra de faire une fonction de filtre et
de tri évolués (avec plus de 2 valeurs comme c'est le cas avec les
fonctions de Excel) et customisable par l'opérateur (avec des
opérateurs conditionnels comme =, >, <, >=, <=, Like, etc...).
Mais je butais sur la façon d'intégrer l'opérateur en passant par une
variable.
"ng" wrote in message
news:...Salut,
Pourquoi tiens tu à évaluer des chaines de caracères ainsi ?
Que répresentent t-elles ?
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
rederon wrote:Bonjour à tous,
J'essaye d'évaluer une expression du type :
string1 = string2
Bizarrement, ça fonctionne parfaitement lorsque les 2 valeurs sont
des nombres, mais pas quand ce sont des chaines de caractère.
Voici ci-dessous un exemple lorsque ça fonctionne.
Je suis sous W2000 avec Excel 2002 (SP2).
J'ai ajouté Microsoft Script Control 1.0 dans le projet et j'ai
déclaré au début de mon module la fonction suivante :
<<<<<<<<<<<<<<<<
Public Function Eval(ByVal strExpression As String) As Variant
Dim objScript As New ScriptControl
objScript.Language = "VBScript"
Eval = objScript.Eval(strExpression)
End Function
Ensuite, j'écris cela dans ma procédure :
<<<<<<<<<<<<<<<<
A = "3"
B = "4"
operateur = " = "
resultat = Eval(A & operateur & B)
msgbox ("Resultat=" & resultat)
A l'execution, le résultat est "FALSE" -> OK
Mais lorsque je remplace A et B par des chaines de caractères et
que cela ne plante pas, le résultat est toujours "TRUE".
Car cela peut aussi planter en générant une erreur de type
"run-time error '1002'" (l'exécution du code s'arrête alors sur
l'expression de sortie de la fonction -> Eval = objScript...)
lorsque l'une des deux chaines de caractère A ou B commence par un
nombre (comme par exemple A = "2a").
J'ajoute que lorsque je supprime la variable relative à
l'opérateur, cela fonctionne parfaitement :
<<<<<<<<<<<<<<<<
resultat = Eval(A = B)
Bien évidemment, j'ai besoin de conserver cette variable dans le
cadre de mon application.
Je me suis dit que j'avais peut-être oublié d'introduire des
fonctions de conversion comme 'CBool' ou 'CStr' mais je ne m'en
suis pas sorti.
Je vous remercie par avance pour vos suggestions.
Stéphane