Estimer la valeur d'un fonction entrée dans une TextBox

Bonjour le forum,

Alors voilà, en gros, j'ai une UserForm dans laquelle j'ai des formules qui me servent à corriger des résultats en fonction de certains paramètres qu'on va rentrer dans la même UserForm.

Initialement, j'avais ma formule en "dur" dans le code mais je veux qu'elle soit modifiable par le biais d'un TextBox afin de pouvoir la modifier facilement lors de l'utilisation.

Ma formule a cette tête :

1 + Val(Me.TextBoxAge.Value) / 25

TextBoxAge étant donc un paramètre qu'on rentre dans une autre TextBox que celle qui contient ma formule... (que de TextBoxssss...)

Et dans le code, je voudrais l'utiliser d'une manière de ce genre afin qu'elle m'affiche le résultat calculé à partir de ladite formule qui est dans la TextBox (FormAgeCorrect)

Me.AgeCorrect.Caption = Val(Me.FormAgeCorrect.Value)

Le problème, c'est que Val ne me calcule pas la valeur de la fonction (ça ne m'étonne qu'à moitié j'avoue...) et je ne sais pas trop comment utiliser tout ça...

(quand je met une valeur numérique, ça marche sans problème évidement!)

Voilà, j'espère avoir été clair... Et aussi que c'est faisable!

Merci d'avance!

PS : J'ai pas mis le fichier parce que mon UserForm commence à être salement lourde avec une bonne 100aine de Label, TextBox et autres, donc je suis pas sûr que ça aide... (et c'est un ptiot peut confidentiel aussi...)

Bonjour

Moi je ne comprends pas (suis pas une référence)

Un fichier simple aurait suffit à mieux cerner le problème

Si j'ai pas de réponses toute à l'heure (là je vais décoller et j'ai pas mal de trucs à faire avant de rentrer), je nettoyerai mon bazar pour uploader mon UF...

mais que les autres ne se gênent pas s'ils comprennent!

En relisant, c'est ptet plus clair comme ça :

J'ai ma formule comme ceci en texte dans cette TextBox :

Me.FormAgeCorrect.Value = "1 + Val(Me.TextBoxAge.Value) / 25"

Et je voudrais afficher le résultat de cette formule de le Caption d'un Label par le biais d'une ligne de ce genre :

Me.AgeCorrect.Caption = Val(Me.FormAgeCorrect.Value)

Mais la fonction Val ne calcule pas la valeur de la fonction parce qu'elle et en texte et donc qu'elle ne retrouve pas la valeur stockée dans Me.TextBoxAge.Value ...

Je pense que c'est plus clair, mais je suis pas sûr!

Bon après avoir fouiné un peu partout, j'ai bien l'impression que ce que je veux faire n'est pas faisable...

En gros ce que je veux faire, c'est pouvoir calculer la valeur de la fonction qui est entrée dans la TextBox et donc stockée en texte...

Mais à moins de tout découper et d'essayer de convertir petits bouts (et encore, je suis pas du tout sûr que ça marche...) je vois pas comment faire...

Bonjour

Je te livre en vrac une idée (je ne sais pas si elle correspond à tes attentes)

A voir et si pas le cas tu jettes

Bonjour Banzaï,

Déjà, merci!

parce que c'est clairement la bonne direction, c'est le Evaluate qu'il me manquait!

J'ai essayé de le mettre "brutalement" dans mon code, il aime pas trop...

Parce que ce que je veux faire c'est qu'on puisse changer la formule :

Me.FormAgeCorrect.Value = "1 + Val(Me.TextBoxAge.Value) / 25"

Qui est une "entrée" et ensuite faire le calcul comme tu l'as fait dans ce que tu m'as envoyé!

Donc en gros, faut que je cronstruise une fonction qui me fait passer de :

"1 + Me.TextBoxAge.Value / 25"

à

"1 +" & Evaluate(Me.TextBoxAge.Value) & "/25"

Je suis sur le coup, avec un petit IsNumeric et des tests sur les signes, je devrais pouvoir m'en sortir... Je clos le sujet en postant le bouzin si j'y arrive!

Encore merci!

Bon, j'ai cédé à la simplicité du code... C'est moins chiant quand on sait ce qu'on cherche!

J'ai fait une fonction dans ce genre :

Public TextBoxAge

Function TestNum2(Formu As String, Param As String) As String

Dim Init1 As Long
Init1 = InStr(1, Formu, Param)

TestNum2 = Left(Formu, Init1 - 1) & Evaluate(TextBoxAge) & Right(Formu, Len(Formu) - (Len(Param) + Init1) + 1)

End Function

Et maintenant faut que je vois ce que ça fait dans mon UserForm....


Boumba!!!

Merci Banzaï pour le déblocage!

J'ai adapté un poil pour que ça colle dans l'UserForm (du style le Evaluate aime pas le vide (""))

et donc avec ça :

Dans l'UF

FormAgeCorrect.Value = "1 + Age / 25"

If Me.CheckBoxAge.Value <> True Then
    Me.AgeCorrect.Caption = 1
Else
    If Me.TextBoxAge.Value = "" Then Me.TextBoxAge.Value = "0"
    Me.AgeCorrect.Caption = Evaluate(ConvFormu(Me.FormAgeCorrect.Value, "Age"))
End If

Dans le module

Function ConvFormu(Formu As String, Param As String) As String
Dim Init1 As Long

Init1 = InStr(1, Formu, Param)

ConvFormu = Left(Formu, Init1 - 1) & Evaluate(BusConsump.TextBoxAge.Value) & Right(Formu, Len(Formu) - (Len(Param) + Init1) + 1)
End Function

Et bah ça roule! )))

Merki enkore!

Rechercher des sujets similaires à "estimer valeur fonction entree textbox"