Petite fonction qui ne marche pas avec des décimaux
2 réponses
Didier
Bonsoir,
Je bricole avec difficultés et en copiant sur le net à droite et à
gauche une fonction qui extrait des nombres d'une chaîne et fait le calcul :
Exemple en L1C1 une chaîne et en L1C2 l'appel à la fonction ci-dessous
avec L1C1 contenant "5 crayons + 3 gommes" j'ai bien 8 en L2C2
"(5crayons + 3gommes) * 10 tiroirs" me donne bien 80
mais dès que j'utilise des nombres décimaux (avec virgule ou avec point)
cela me renvoie une erreur #valeur!
Je ne m'en sort pas.
Voici la fonction censée faire le travail :
Function CalculExp(Expression)
Application.Volatile
Numeriques = ",()+*-/^0123456789"
For i = 1 To Len(Expression.Value)
If InStr(1, Numeriques, Mid(Expression, i, 1)) Then sExp = sExp +
Mid(Expression, i, 1)
Next
CalculExp = Evaluate(sExp)
End Function
Quelqu'un a-t-il une idée pour me dépanner ?
Merci d'avance
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Modeste
Bonsour® Didier avec ferveur ;o))) vous nous disiez :
Bonsoir,
Je bricole avec difficultés et en copiant sur le net à droite et à gauche une fonction qui extrait des nombres d'une chaîne et fait le calcul : Exemple en L1C1 une chaîne et en L1C2 l'appel à la fonction ci-dessous avec L1C1 contenant "5 crayons + 3 gommes" j'ai bien 8 en L2C2 "(5crayons + 3gommes) * 10 tiroirs" me donne bien 80
mais dès que j'utilise des nombres décimaux (avec virgule ou avec point) cela me renvoie une erreur #valeur! Je ne m'en sort pas. Voici la fonction censée faire le travail :
Function CalculExp(Expression) Application.Volatile Numeriques = ",()+*-/^0123456789" For i = 1 To Len(Expression.Value) If InStr(1, Numeriques, Mid(Expression, i, 1)) Then sExp = sExp + Mid(Expression, i, 1) Next CalculExp = Evaluate(sExp) End Function
VBA utilise le séparateur décimal "." en lieu et place du séparateur décimal local ","
Function CalculExp(Expression) Application.Volatile Numeriques = ",()+*-/^0123456789" For i = 1 To Len(Expression.Value) If InStr(1, Numeriques, Mid(Expression, i, 1)) Then sexp = sexp & Mid(Expression, i, 1) Next sexp = Application.Substitute(sexp, ",", ".") CalculExp = Evaluate(sexp) End Function
-- -- @+ ;o)))
Bonsour® Didier avec ferveur ;o))) vous nous disiez :
Bonsoir,
Je bricole avec difficultés et en copiant sur le net à droite et à
gauche une fonction qui extrait des nombres d'une chaîne et fait le
calcul : Exemple en L1C1 une chaîne et en L1C2 l'appel à la fonction
ci-dessous
avec L1C1 contenant "5 crayons + 3 gommes" j'ai bien 8 en L2C2
"(5crayons + 3gommes) * 10 tiroirs" me donne bien 80
mais dès que j'utilise des nombres décimaux (avec virgule ou avec
point) cela me renvoie une erreur #valeur!
Je ne m'en sort pas.
Voici la fonction censée faire le travail :
Function CalculExp(Expression)
Application.Volatile
Numeriques = ",()+*-/^0123456789"
For i = 1 To Len(Expression.Value)
If InStr(1, Numeriques, Mid(Expression, i, 1)) Then sExp = sExp +
Mid(Expression, i, 1)
Next
CalculExp = Evaluate(sExp)
End Function
VBA utilise le séparateur décimal "." en lieu et place du séparateur décimal local ","
Function CalculExp(Expression)
Application.Volatile
Numeriques = ",()+*-/^0123456789"
For i = 1 To Len(Expression.Value)
If InStr(1, Numeriques, Mid(Expression, i, 1)) Then sexp = sexp & Mid(Expression, i, 1)
Next
sexp = Application.Substitute(sexp, ",", ".")
CalculExp = Evaluate(sexp)
End Function
Bonsour® Didier avec ferveur ;o))) vous nous disiez :
Bonsoir,
Je bricole avec difficultés et en copiant sur le net à droite et à gauche une fonction qui extrait des nombres d'une chaîne et fait le calcul : Exemple en L1C1 une chaîne et en L1C2 l'appel à la fonction ci-dessous avec L1C1 contenant "5 crayons + 3 gommes" j'ai bien 8 en L2C2 "(5crayons + 3gommes) * 10 tiroirs" me donne bien 80
mais dès que j'utilise des nombres décimaux (avec virgule ou avec point) cela me renvoie une erreur #valeur! Je ne m'en sort pas. Voici la fonction censée faire le travail :
Function CalculExp(Expression) Application.Volatile Numeriques = ",()+*-/^0123456789" For i = 1 To Len(Expression.Value) If InStr(1, Numeriques, Mid(Expression, i, 1)) Then sExp = sExp + Mid(Expression, i, 1) Next CalculExp = Evaluate(sExp) End Function
VBA utilise le séparateur décimal "." en lieu et place du séparateur décimal local ","
Function CalculExp(Expression) Application.Volatile Numeriques = ",()+*-/^0123456789" For i = 1 To Len(Expression.Value) If InStr(1, Numeriques, Mid(Expression, i, 1)) Then sexp = sexp & Mid(Expression, i, 1) Next sexp = Application.Substitute(sexp, ",", ".") CalculExp = Evaluate(sexp) End Function
-- -- @+ ;o)))
Didier
VBA utilise le séparateur décimal "." en lieu et place du séparateur décimal local ","
Function CalculExp(Expression) Application.Volatile Numeriques = ",()+*-/^0123456789" For i = 1 To Len(Expression.Value) If InStr(1, Numeriques, Mid(Expression, i, 1)) Then sexp = sexp & Mid(Expression, i, 1) Next sexp = Application.Substitute(sexp, ",", ".") CalculExp = Evaluate(sexp) End Function
Réponse super rapide !!! et tout fonctionne merci beaucoup Didier
VBA utilise le séparateur décimal "." en lieu et place du séparateur décimal local ","
Function CalculExp(Expression)
Application.Volatile
Numeriques = ",()+*-/^0123456789"
For i = 1 To Len(Expression.Value)
If InStr(1, Numeriques, Mid(Expression, i, 1)) Then sexp = sexp & Mid(Expression, i, 1)
Next
sexp = Application.Substitute(sexp, ",", ".")
CalculExp = Evaluate(sexp)
End Function
Réponse super rapide !!! et tout fonctionne
merci beaucoup
Didier
VBA utilise le séparateur décimal "." en lieu et place du séparateur décimal local ","
Function CalculExp(Expression) Application.Volatile Numeriques = ",()+*-/^0123456789" For i = 1 To Len(Expression.Value) If InStr(1, Numeriques, Mid(Expression, i, 1)) Then sexp = sexp & Mid(Expression, i, 1) Next sexp = Application.Substitute(sexp, ",", ".") CalculExp = Evaluate(sexp) End Function
Réponse super rapide !!! et tout fonctionne merci beaucoup Didier