IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Executer un calcul à partir d'un string


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 20
    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.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Juin 2011
    Messages
    162
    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 : 162
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    Eval(Replace("5*T-2", "T", "10"))
    BCdt

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 20
    Par défaut
    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...

  4. #4
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Juin 2011
    Messages
    162
    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 : 162
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    =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 : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "Résultat = " & Eval(Replace([Calcul], "T", "" & InputBox("Valeur T", "Saisie de valeur")))
    Bcdt

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 20
    Par défaut
    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.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Juin 2011
    Messages
    162
    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 : 162
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calculer à partir d'un string
    Par Goffer dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 20/04/2011, 17h20
  2. Executer commande à partir d'un String
    Par Skedz dans le forum Débuter
    Réponses: 7
    Dernier message: 24/01/2009, 10h04
  3. Réponses: 4
    Dernier message: 31/08/2006, 15h31
  4. Executer du code C à partir d'une string.
    Par barbare128 dans le forum C
    Réponses: 16
    Dernier message: 27/06/2006, 00h59
  5. [VB.NET] Executer une requete à partir d'un DataSet...?
    Par anthony70 dans le forum Accès aux données
    Réponses: 3
    Dernier message: 12/07/2004, 14h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo