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

Macros et VBA Excel Discussion :

VBA : Obtenir le résultat d'une formule définit sous forme de texte


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2018
    Messages : 8
    Par défaut VBA : Obtenir le résultat d'une formule définit sous forme de texte
    Bonjour à tous,

    J'ai une problématique qui semble toute bête mais que je n'arrive pas à résoudre :

    J'obtiens sous forme de variable une formule définit en texte :
    Ex : a (qui est ma variable) = "=1000/690*Racine(3)". Je souhaiterais que VBA me calcul la formule pour envoyer dans un label le résultat. Or, je n'arrive pas à effectuer ce calcul, la formule restant sous forme de Texte.


    Pour expliquer plus concrètement, j'ai définit sur une feuille Excel un tableau structuré qui comprend en ligne une liste d'Unité, en Colonne une liste de type d'alimentation. (fichier elec) et dans le corps du tableau une liste de formule (une formule par cellule)
    En choisissant l'unité et l'alimentation (donc ligne et colonne), je récupère une formule enregistrée sous forme de texte (ex :cellule D4: '=CONSOMMATION/TENSION*Racine (3))

    Sous VBA j'ai défini une variable Conso avec une valeur (qui sera alimentée via un formulaire) et une variable tension (alimentée aussi)

    J'utilise la fonction replace pour modifier "CONSOMMATION" par Conso et "TENSION" par Tension.
    Cette formule est enregistrée dans une variable a qui me donne par exemple a="=1000/690*racine(3).
    Et la j'arrive à mon problème, c'est a dire que je voudrais faire apparaître dans un label la valeur 2,5102.... et non la formule 1000/690*racine (3)

    Merci d'avance pour votre aide.

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    Bonjour

    je pense qu'il faut mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a  =Conso /Tension*Racine(3)
    les valeurs des variables fournies et de a

    et vérifier a en mode pas à pas

    tu demande a VBA de mettre la formule dans la variable, il le fait.

    Bonne journée.

  3. #3
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2018
    Messages : 8
    Par défaut
    Merci a_diard pour le retour.

    La formule n'est pas écrite dans VBA. Je la récupère via le tableau sur une feuille Excel, et sous forme de texte ('=CONSOMMATION / TENSION * RACINE (3)). suivant les lignes et colonnes choisis, les formules ne sont pas les mêmes.

    Oui je demande a VBA de mettre la formule dans la variable, mais je souhaiterais passer à l'étape d'après, qui est de demandé à VBA de calculé cette formule.

    Dans Excel, la formule est dans une cellule sous forme de Texte : '=CONSOMMATION / TENSION * RACINE (3)
    j'envoie cette formule dans une variable VBA ce qui donne a = "=CONSOMMATION/TENSION*RACINE(3)
    Je change, avec la fonction replace, les variables par les valeurs numériques : a="=1000/690*1.73..." --> mais la formule reste une chaine de caractère texte

    Et l'étape suivante, c'est de transformer cette chaine de caractère en formule pour que VBA la calcule et me renvoie dans un label le résultat.

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour,

    Peut être avec evaluate ? https://docs.microsoft.com/en-us/off...ation.Evaluate

  5. #5
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    Pour cela il faut utiliser Evaluate - cf aide vba

    Edit : @halaster08 - on a posté quasi en même temps, je confirme pour Evaluate (il faudra enlever le signe = pour utiliser la formule dans Evaluate)
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  6. #6
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2018
    Messages : 8
    Par défaut
    Bonjour RyuAutodidacte et halaster08,

    J'avais trouvé cette fonction sur un forum mais cela me renvoie Erreur 2015, même en enlevant le signe égal.

  7. #7
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Citation Envoyé par Tullium Voir le message
    J'avais trouvé cette fonction sur un forum mais cela me renvoie Erreur 2015, même en enlevant le signe égal.
    Peux-tu nous montrer ton code et préciser la ligne + le descriptif de l'erreur.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/05/2016, 21h08
  2. Interpréter une formule saisie sous forme de chaîne de caractères
    Par Pozzo dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 29/05/2013, 09h30
  3. [MySQL] Problème pour afficher le résultat d'une procédure stockée sous forme de table html
    Par Baleze dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/12/2012, 16h15
  4. Réponses: 4
    Dernier message: 18/10/2010, 09h53
  5. Réponses: 2
    Dernier message: 20/12/2006, 08h26

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