Lire une formule dans une cellule

Résolu/Fermé
Alain - 16 juin 2011 à 17:06
 Alain - 17 juin 2011 à 14:18
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
A voir également:

7 réponses

ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 2 430
17 juin 2011 à 14:01
bonjour à tous

je ne sais pas si j'ai bien compris le pb, mais voila quand même une tentative

https://www.cjoint.com/?0Frn7GplWul

bonne suite
1
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
16 juin 2011 à 18:53
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
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
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
17 juin 2011 à 11:10
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
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
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
17 juin 2011 à 11:53
C'était ma 1° réponse...

Abandon
0
Raymond PENTIER Messages postés 58933 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 28 avril 2025 17 313
17 juin 2011 à 13:27
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Raymond PENTIER Messages postés 58933 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 28 avril 2025 17 313
17 juin 2011 à 13:29
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
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
génial, merci beaucoup ccm81, et merci à michel et raymond de s'être penchés sur le problème.
0