Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/10/2011, 10h17   #1
Invité régulier
 
Inscription : octobre 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 20
Points : 5
Points : 5
Par défaut Executer un calcul à partir d'un string

Bonjour à tous,

je me suis renseigné sur la methode Eval(), et je me suis rendu compte qu'il ne sait pas interprété les variables.

Dans ma base de données j'ai une table stockant des calculs simple mais différent à chaque cas. Ca peut être par exemple :
- 0.004 * T
- 1+0.003*(T-1100)
etc.
Alors j'aimerais trouver un moyen d'Exécuter le calcul après avoir remplacer le T par une valeur numérique...
Car faire une concaténation devient trop compliqué dans la méthode Eval()

en vous remerciant d'avance.
gnstian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 10h43   #2
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Bonjour,

La fonction Replace doit répondre à vos attentes (remplacement du T par la valeur numérique) puis utilisation d'Eval pour le calcul.

Exemple :

Code :
Eval(Replace("5*T-2", "T", "10"))
BCdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 10h58   #3
Invité régulier
 
Inscription : octobre 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 20
Points : 5
Points : 5
Bonjour fbtsra,

J'ai essayé cette solution, mais j'ai un message d'erreur "incompatibilité de type", mais le calcul est stocké dans une variable, et Eval() n'est pas capable de lire une variable...
Je ne peut pas rentrer les calculs manuellement dans Eval() car il y en a beaucoup trop...

Je suis complètement bloqué je ne sais pas quoi faire...
gnstian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 11h18   #4
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Pas de raison que cela ne fonctionne pas ...

Exemple si vous avez stocké dans le champ texte "calcul" d'une table vos formules, vous pouvez obtenir le résultat en indiquant dans la propriété controlsource d'un champ :

Code :
=Eval(Replace([Calcul];"T";"10"))
ou l'obtenir via du code de la même façon, reste à voir comment vous introduisez la valeur T.

Exemple :

Code :
MsgBox "Résultat = " & Eval(Replace([Calcul], "T", "" & InputBox("Valeur T", "Saisie de valeur")))
Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 11h31   #5
Invité régulier
 
Inscription : octobre 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 20
Points : 5
Points : 5
Merci de ta réponse qui m'éclaire un peu plus,

T est introduit par une Textbox contenu dans un formulaire.
Le but de la manoeuvre est de récupérer un calcul en fonction de la nécessité de l'éxécuter et de stocker le résultat dans une autre textbox.

Dans ma démarche je récupère la valeur du champ qu'il me faut et je la stocke dans une variable je remplace T par la valeur du champ correspondant, après je cherche le moyen d'éxécuter le calcul.
gnstian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 11h51   #6
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Si j'ai bien compris, cela donne pour un formulaire avec :

- un Textbox "ValeurT" contenant la valeur de T
- un Textbox "Resultat" pour contenir le résultat du calcul
- un bouton de commande "Test"


Code :
1
2
3
4
5
Private Sub Test_Click()
 
Resultat = Eval(Replace([Calcul], "T", "" & ValeurT.Value))
 
End Sub
Tu auras probablement à remplacer [calcul] par la valeur de ta variable.

Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 11h59   #7
Invité régulier
 
Inscription : octobre 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 20
Points : 5
Points : 5
Oui c'est bon j'ai remplacé [calcul] par le nom de ma variable et cette fois ça a marché merci =)
gnstian est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h24.


 
 
 
 
Partenaires

Hébergement Web