Lire une formule dans une cellule

Résolu
Alain -  
 Alain -
Bonjour,


Je travaille sous excel, avec une matrice contenant de nombreuses formules, et je souhaiterais pouvoir lire une formule dans cette matrice, et l'appliquer à mes variables.
Par exemple, une fois que j'ai attribué des valeurs aux variables X et Y, je voudrais lire la formule "X+Y" dans une cellule, et afficher le résultat dans une autre...
Est-ce possible?
Ou dois-je faire tous les calculs dans excel directement?

En vous remerciant par avance,
Alain

7 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    essaies avec cette fonction
    Function dire_formule(cellule As Range) As String
         If cellule.HasFormula Then
              dire_formule = cellule.Formula
         Else
              dire_formule = "sans formule"
         End If
    End Function


    0
  2. Alain
     
    Je te remercie de ta réponse.
    cependant, j'ai essayé ta fonction, avec la procédure suivante:

    Sub essai()

    X = Range("B4").Value
    Y = Range("B5").Value
    Z = dire_formule(Cells(3, 3))
    Range("B6").Select
    ActiveCell.Value = Z
    End Sub

    Mais la formule C3 contient bien "X+Y",
    et la procédure me renvoi "sans formule" en B6.
    si je mets "=X+Y" en C3, les cellules C3 et B6 affichent "#NOM?" sans effectuer le calcul.
    Comment faire pour effectuer le calcul, et pas seulement transférer la formule?
    Cordialement,
    Alain
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      bonjour,

      si tu écris en C3 = X+Y tu n'auras de formule mais une valeur...
      si tu utilises VBA
      Range("C3").FormulaLocal = "=B4+B5"
      la fonction a été modifiée car elle renvoyait la somme et non la formule


      demo
      https://www.cjoint.com/?3FrljvbA3py
      0
    2. Alain
       
      cette macro permet effectivement d'afficher dans excel, et d'effectuer le calcul, d'une formule entrée dans le code vba, mais est-il possible de lire d'abord cette formule dans excel?
      C'est à dire de lire la formule "=B4+B5" dans une cellule, et donc de pouvoir la modifier dans excel...
      0
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      C'était ma 1° réponse...

      Abandon
      0
  3. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 481
     
    Bonjour Alain.

    J'avoue que je n'ai pas compris l'intérêt de ce que tu cherches à faire ...

    * Mais si tu veux juste savoir quelle formule donne un certain résultat, il suffit de faire un double-clic dans la cellule !

    * Pour lire toutes les formules de la feuille d'un coup, demande Affichage/Formules.

    * Pour un affichage permanent des formules dans des cellules différentes, il faut travailler cellule par cellule :
    - ajouter un apostrophe au début de la formule
    - sélectionner la formule ainsi modifiée
    - faire Copier
    - cliquer sur la croix rouge "Annuler" à gauche de la Barre de formule (afin que la modification ne soit pas validée dans la cellule source)
    - aller dans la cellule de destination
    - faire Coller
    - recommencer pour chaque cellule ...
    mais cela ne te permettra pas de modifier la formule de la cellule qui effectue le calcul.
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 481
     
    Une alternative consisterait à créer des formules nommées, c'est-à-dire donner un nom à tes formules, comme tu donnes un nom à des plages.
    En modifiant une de ces formules, toutes les cellules contenant cette formule seraient modifiées.
    0
  6. Alain
     
    En fait je n'ai peut-être pas été très clair, et je m'en excuse auprès de michel.
    Je voudrais en fait pouvoir faire lire par le programme vba des formules, de type
    "muH*étaNO3H*(k02/(KO2+SO2))*(SNO3/(KNO3+SNO3))*(SF/(KF+SF))*(SF/(SF+SA))*(SNH4/(KNH4+SNH4))*(SPO4/(KP+SPO4))*(SALK/(KALK+SALK))*XH
    ", dont j'ai des tableaux pleins, dans le tableur excel, sans avoir à les rentre en vba.
    Je pourrais ainsi attribuer des valeurs aux variables (muH, kO2, etc...) et les calculer, sans remplacer manuellement dans chaque formule la valeur des variables par l'adresse de la cellule contenant la valeur.
    0
  7. Alain
     
    génial, merci beaucoup ccm81, et merci à michel et raymond de s'être penchés sur le problème.
    0