Prise en compte d'une formule dans un textbox

Résolu
Signaler
Messages postés
11
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
6 mai 2008
-
Messages postés
11
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
6 mai 2008
-
j'ai crée un projet vb qui me permet de faire de l'aquisition de données grâce à un convertisseur analogique numérique sur deux voies d'aquisition. Sur l'une des voies j'ai l'image d'une tension et sur l'autre j'ai l'image du courant. Ces valeurs sont classées dans un tableau avant de faire l'objet d'une représentation graphique (mschart)
tableau(i,0) ; tableau(i,1) pour la tension
tableau(i,2) ; tableau(i,3) pour le courant.Comment peut-on faire avec l'aide d'une textbox pour calculer par exemple P u*i ou P 250*i^2 pour pouvoir représenter graphiquement le résultat de ma formule. L'idée serait de dévelloper une prise de formule à partir d'une textbox pour pouvoir faire des opérations mathématiques variées sur mes deux grandeurs physiques (Elles peuvent être très différentes d'une aquisition à l'autre, u,i,T, x....)
A voir également:

7 réponses

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
18
Non, je ne crois pas que ça puisse le faire. Tu peux essayer ça :

Dim r() As String
Dim s As String
Dim resultat As Double


'ta chaine saisie dans la textbox
s = "u*i"

'on remplace les lettres par leur valeur
s = Replace(s, "u", tableau(i, 1))
s = Replace(s, "i", tableau(i, 3))

'on découpe la chaine suivant le séparateur '*'
r = Split(s, "*")

'on calcule en convertissant le texte en double
resultat = CDbl(r(0)) * CDbl(r(1))

MsgBox resultat

Sinon, tu peux toujours tenter ta chance avec ce code, en l'adaptant) :
http://www.vbfrance.com/code.aspx?ID=22816

Mais je ne suis pas persuadé que ça fonctionne dans ton cas.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
11
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
6 mai 2008

Désolé,
je me rends compte que j'ai oublié de dire bonjour à tous et merci pour les toutes réponses qui seraient les bienvenues.
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
18
Salut,

Comme j'ai commencé par l'électronique (il y a longtemps), j'ai bien envie de t'aider (surtout que je comprend encore tes formules). Seulement, il me faudrait quelques précisions.

Si j'ai bien compris, hors ta méthode d'acquisition, les données en entrée se trouvent dans un tableau du genre Tableau(x,y) où x est le nombre de lignes et y le nombre de colonnes.
Ce que je ne comprend pas c'est pourquoi 2 colonnes (0 et 1) pour la tension et 2 colonnes (2 et 3) pour le courant.

A part ça, pour une prise de formule, dans ce cas, vaut mieux éviter la textbox (trop d'erreurs possibles à gérer).
Finalement le nombre de formules possibles est assez limité en tous cas plus limité que celui des erreurs. Je verrai donc plutôt l'utilisation d'une combobox ou d'une listbox pour les lister. Et orienter le calcul suivant l'item cliqué.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Messages postés
11
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
6 mai 2008

salut canislupus

Effectivement les données en entrée se trouvent dans un tableau du genre Tableau(x,3) où x+1 est le nombre de lignes et 3+1 le nombre de colonnes.
2 colonnes (0 et 1) pour la tension avec tableau(i,0) pour les abscisses i de mon point d'acquisition et tableau(i,1) pour les ordonnées correspondantes de mon point d'acquisition
2 colonnes (2 et 3) pour le courant avec le même principe tableau (i,2) pour les abscisses et tableau(i,3) pour les ordonnées. ( remarque: tableau(i,0)=tableau(i,2) méthode plus simple pour moi pour utiliser mschart avec tracé des 2 courbes simultanées)

Mais je tiens à préciser qu'il me faudrait, à partir d'une textbox, pouvoir faire des opérations mathématiques à partir des 2 grandeurs d'entrées qui ont fait l'objet d'une acquisition. J'ai pris l'exemple de la tension et du courant en acquisition et de la puissance, non pas en acquisition, mais déduite d'un calcul mathématique engendré par une formule donnée dans la texbox (P =u*i)
Cela pourrait aussi s'appliquer à d'autres grandeurs d'entrées comme la pression et la hauteur de liquide et ainsi déduire grâce à une formule introduite dans ma textbox, la masse volumique de mon fluide.
Les exemples ne doivent pas être limités à ceux que l'on peut introduire dans une combobox.
Comment faire donc pour identifier une chaîne de caractères dans une textbox
(quelle est l'instruction)
merci pour avoir eu le courage de lire ce paté.
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
18
Ok, donc je vais me répéter, faire confiance à une saisie de formule dans une textbox c'est très aléatoire. D'ailleurs, en règle générale, il ne faut JAMAIS faire confiance à la saisie d'un utilisateur.

Sinon, identifier un "U" dans une chaîne c'est facile :

pos = instr(textbox.text,"U")

S'il y a un "U" dans ta chaîne, pos sera > 0 mais ça peut être le "U" de "U*I" ou de "Ursule" ou de n'importe quelle saisie contenant un "U".

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Messages postés
11
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
6 mai 2008

salut
merci pour ta réponse.
J'ai une autre question toujours en rapport avec mon problème.
Voila, j'ai réussi à convertir la formule P = u*i, tapée dans la textbox, en une chaîne de carractères tableau(i,1)*tableau(i,3) .
Je rappelle u est contenu dans tableau (i,1) et i dans tableau(i,3)
Cette châine de carractères se nomme caract. Donc quand j'effectue msgbox caract , il m'écrit : tableau(i,1)*tableau(i,3) . Parfait. Mais ce qui m'interesse c'est de savoir si il serait possible d'exécuter le contenu de caract dans une boucle du genre :
for i = 0 to x
tabformule(i,1) = caract ' il doit tenir compte de tableau(i,1)*tableau(i,3) et non pas de caract lui même
Merci pour tes conseils
Messages postés
11
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
6 mai 2008

merci pour l'info, je vais essayer de voir si je peux en tirer quelque chose.