TexBonsoirte -> Formule

  • Initiateur de la discussion Matt78
  • Date de début
M

Matt78

Guest
bonsoir toutes et tous,

J'ai une variante de ma précédente question. peut on convertir une chaine de caractères en formule de la cellule A1 par exemple:
Ex: A = '=3*5' et A devient la formule de la cellule 'A1'.
Donc 'A1' = 15.
Je ne sais pas si c'est possible, je fais confience aux experts du forum.
Bonne fin de nuit.
Matt78
 

andré

XLDnaute Barbatruc
Salut Matt78, Hervé et les autres,

Si la formule est affichée dans la cellule, au lieu du résultat, c'est fort probablement que la cellule est au format texte, ou que la formule est précédée d'une ' (apostrophe) ou d'un espace.

Dans le premier cas, sélectionner la (ou les) cellule(s), la (ou les) mettre au format standard, puis cliquer dans la barre de formule et valider.

Dans le deuxième cas, il faut effacer la ' ou l'espace.

Si ce n'est pas cela, un petit extrait en pièce jointe permettrait d'y voir plus clair.

Ândré.
 
M

Matt78

Guest
Bonjour Hervé, andré, le forum,

j'ai essayé ta solution qui marche bien, sauf que si je fais référence a une autre feuille, j'ai un problème sur le résultat: il me met en cellule 'A1' : dièse'VALEUR!

Private Sub workBook_open()
Dim f1, f2, c1 As String
f1 = 'Feuil2'
f2 = 'Feuil3'
c1 = 'A1'
f = 'Worksheets(f1).range(c1).value + Worksheets(f2).range(c1).value'
Worksheets('Feuil1').Range('A1').Value = Evaluate(f)
End Sub

Pourquoi?
Merci pour votre aide et bonne journée.
Matt78
 

Hervé

XLDnaute Barbatruc
re tout le monde
Bonjour andré

Matt, :)

Dans ce cas précis, tu n'a pas besoin d'évaluer le texte, puisque f prend déjà la valeur numérique de A1 des deux feuilles :

Private Sub Workbook_Open()
Dim f1, f2, c1 As String
Dim f As Double
f1 = 'Feuil2'
f2 = 'Feuil3'
c1 = 'A1'
f = Worksheets(f1).Range(c1).Value + Worksheets(f2).Range(c1).Value
Worksheets('Feuil1').Range('A1').Value = f
End Sub

En espérant t'avoir été utile.

Salut
 
M

Matt78

Guest
Re Hervé, le forum,

dans le code que je t'ai montré, f est entre guillemets, car c'est une chaine qui peut changer d'où:

Private Sub workBook_open()
Dim f1, f2, c1 As String
f1 = 'Feuil2'
f2 = 'Feuil3'
c1 = 'A1'
f = 'Worksheets(f1).Range(c1).Value + Worksheetsf2).Range'(c1).Value'
Worksheets('Feuil1').Range('A1').Value = evaluate(f)
End Sub

Résultat Feuil1 Cellule'A1' = #VALEUR!
@+
Matt78
 

marco57

XLDnaute Occasionnel
Salut à tous,
Tu as abusé un peu sur les '.
Il semble que tu aimes les textes.
Modifie donc la ligne f= en enlevant les '.
Tu obtiendras cela et ça marche

Dim f1, f2, c1 As String
f1 = 'Feuil2'
f2 = 'Feuil3'
c1 = 'A1'
f = Worksheets(f1).Range(c1).Value * Worksheets(f2).Range(c1).Value
Worksheets('Feuil1').Range('A1').Value = Evaluate(f)


Tu peux aussi écrire directement

Worksheets('Feuil1').Range('A1').Value = _
Evaluate(Worksheets('Feuil2').Range('a1').Value _
* Worksheets('Feuil3').Range('a1').Value)


Attention, j'ai remplacer le signe + par * pour être conforme à ta demande initiale.

A+

Marco
 

Hervé

XLDnaute Barbatruc
Rebonjour tout le monde
Bonjour marco

Je pense que matt, ne veut pas renvoyer la valeur, mais la formule dans la cellule A1 :

Dim f1, f2, c1 As String
f1 = 'Feuil2'
f2 = 'Feuil3'
c1 = 'A1'
f = '=' & f1 & '!' & c1 & '+' & f2 & '!' & c1
Worksheets('Feuil1').Range('A1').Value = f

Enfin, si j'ai bien compris :unsure:

Salut
 
M

Matt78

Guest
Bonjour marco, Hervé, le forum,

Merci Hervé, tu as parfaitement compris mon besoin.
C'est super génial, car ce n'était pas évident à faire comprendre, ou c'est moi qui n'utilisait pas une bonne terminologie.
Merci à vous tous pour ce coup de main fort appréciable.
Matt
 

Discussions similaires