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 :

Transformer une formule avec INDEX/EQUIV en valeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 35
    Par défaut Transformer une formule avec INDEX/EQUIV en valeur
    Bonjour

    J'ai une formule qui est longue et horrible avec une recherche et des interpolations, j'utilise FormulaLocal donc le résultat est une formule. Je voudrais que le résultat soit une valeur mais je ne vois pas comment faire.
    Voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sheets("Resultats").Range("L" & i).FormulaLocal = "=(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff1"";coeff_liq;0))+(AE" & i & "-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1))*(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1));EQUIV(""coeff1"";coeff_liq;0))-INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff1"";coeff_liq;0)))/(INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1))-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1)))*(V" & i & "/10000)^4+(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff2"";coeff_liq;0))+(AE" & i & "-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1))*(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1));EQUIV(""coeff2"";coeff_liq;0))-INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff2"";coeff_liq;0)))/(INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1))-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1)))*(V" & i & "/10000)^3" _
    & "+(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff3"";coeff_liq;0))+(AE" & i & "-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1))*(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1));EQUIV(""coeff3"";coeff_liq;0))-INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff3"";coeff_liq;0)))/(INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1))-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1)))*(V" & i & "/10000)^2+(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff4"";coeff_liq;0))+(AE" & i & "-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1))*(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1));EQUIV(""coeff4"";coeff_liq;0))-INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff4"";coeff_liq;0)))/(INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1))-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1)))*(V" & i & "/10000)" _
    & "+(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff5"";coeff_liq;0))+(AE" & i & "-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1))*(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1));EQUIV(""coeff5"";coeff_liq;0))-INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff5"";coeff_liq;0)))/(INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1))-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1)))"
    Pouvez-vous m'aider ?
    Merci
    Romhain

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Resultats").Range("L" & i).Value = Sheets("Resultats").Range("L" & i).Value

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 35
    Par défaut
    Citation Envoyé par riaolle Voir le message
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Resultats").Range("L" & i).Value = Sheets("Resultats").Range("L" & i).Value
    Merci cette ligne de code est à ajouter juste après celle du formulalocal ?

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Oui, c'est ça.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 35
    Par défaut
    Ca ne fonctionne pas, Excel renvoie #REF!

    La proposition de Ben_L me renvoie #VALEUR!

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Es-tu sûr que ta formule fonctionne avant même de vouloir la transformer en valeur ?
    Ceci marche sans problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test()
        Range("B1").FormulaLocal = "=A1"
        Range("B1").Value = Range("B1").Value
    End Sub

  7. #7
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    Bonjour,

    Une variante par rapport à la proposition de riaolle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets("Resultats").Range("L" & i).Value = Evaluate("=(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff1"";coeff_liq;0))+(AE" & i & "-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1))*(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1));EQUIV(""coeff1"";coeff_liq;0))-INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff1"";coeff_liq;0)))/(INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1))-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1)))*(V" & i & "/10000)^4+(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff2"";coeff_liq;0))+(AE" & i & "-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1))*(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1));EQUIV(""coeff2"";coeff_liq;0))-INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff2"";coeff_liq;0)))/(INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1))-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1)))*(V" & i & "/10000)^3" _
    & "+(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff3"";coeff_liq;0))+(AE" & i & "-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1))*(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1));EQUIV(""coeff3"";coeff_liq;0))-INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff3"";coeff_liq;0)))/(INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1))-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1)))*(V" & i & "/10000)^2+(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff4"";coeff_liq;0))+(AE" & i & "-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1))*(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1));EQUIV(""coeff4"";coeff_liq;0))-INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff4"";coeff_liq;0)))/(INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1))-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1)))*(V" & i & "/10000)" _
    & "+(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff5"";coeff_liq;0))+(AE" & i & "-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1))*(INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1));EQUIV(""coeff5"";coeff_liq;0))-INDEX(temp_liq;(EQUIV(AE" & i & ";Pression_liq;-1)+1);EQUIV(""coeff5"";coeff_liq;0)))/(INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1))-INDEX(Pression_liq;EQUIV(AE" & i & ";Pression_liq;-1)+1))))"
    Mais il semblerait préférable de définir des variable intermédiaires, afin d'éviter de recalculer plusieurs fois les mêmes sous-expressions.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/04/2017, 18h08
  2. [XL-2010] Copier un N° de ligne dans une formule complexe index Equiv
    Par Denis_67 dans le forum Excel
    Réponses: 2
    Dernier message: 08/12/2016, 14h10
  3. Réponses: 10
    Dernier message: 01/07/2015, 17h24
  4. [XL-2007] remplir une liste avec index equiv
    Par nb-wissam dans le forum Excel
    Réponses: 4
    Dernier message: 19/01/2014, 17h43
  5. [XL-2007] Macro pour récupérer la valeur d'une formule avec Aujourd'hui
    Par patougaffou dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 28/09/2009, 18h28

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