Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

utilisation de activecell.formula

5 réponses
Avatar
lion10
bonjour

je planche tjs sur la possibilité d'exécuter une formule récupérée sous
forme de texte afin que sous excell lorsque je taperais "=evalueformule(
xxxx)" la cellule affiche le résultat de la fonction x.

j'ai recherché sur le net mais mes essais restent sans résultat je récupère
tjs #erreur !!

J'ai mis dans un module contenant déja une autre fonction qui marche :
Function Evalueformule(x)
ActiveCell.Formula = x
End Function

J'ai essayé avec formulalocal, formula en rajoutant aussi R1C1 et même avec
une chaine x passant en paramètre bêtement =A1*a2

Ma fonction est dans le même module qu'une fonction qui fonctionne, ce ne
doit pas être un pb de visibilité export ??

Faut il déclarer une variable x local pour le paramètre x ?

Il semblerait qu'il faut pour certains mettre le nom de la fonction en
anglais, mais j'ai cru comprendre que ce n'est pas le cas si on met local.
Du reste pour une fonction simple * il ne doit pas y avoir de pb.

D'avance merci

5 réponses

Avatar
papou
Bonjour
Testé avec succès sur Excel 2003 SP2 :
Function Evalueformule(Formule)
ActiveCell.FormulaLocal = Formule
End Function

Sub testEvalueFormule()
Evalueformule "=SOMME(A1:A50)"
End Sub

Cordialement
PAscal

"lion10" a écrit dans le message de news:

bonjour

je planche tjs sur la possibilité d'exécuter une formule récupérée sous
forme de texte afin que sous excell lorsque je taperais "=evalueformule(
xxxx)" la cellule affiche le résultat de la fonction x.

j'ai recherché sur le net mais mes essais restent sans résultat je
récupère
tjs #erreur !!

J'ai mis dans un module contenant déja une autre fonction qui marche :
Function Evalueformule(x)
ActiveCell.Formula = x
End Function

J'ai essayé avec formulalocal, formula en rajoutant aussi R1C1 et même
avec
une chaine x passant en paramètre bêtement ¡*a2

Ma fonction est dans le même module qu'une fonction qui fonctionne, ce ne
doit pas être un pb de visibilité export ??

Faut il déclarer une variable x local pour le paramètre x ?

Il semblerait qu'il faut pour certains mettre le nom de la fonction en
anglais, mais j'ai cru comprendre que ce n'est pas le cas si on met local.
Du reste pour une fonction simple * il ne doit pas y avoir de pb.

D'avance merci





Avatar
lion10
Bonjour

je vois une différence / ce que j'ai fait :
-Pour vous une fonction evalueformule est appelée par la fonction texte avec
une chaine de caractère entre guillemet ( oubli parenthèse je pense).

Pour moi j'ai cette fonction évalueformule dans un moidule vb et ensuite je
l'appelle dans le classeur excel en mettant =evalueformule(xx) dans une
cellule.

C'est sans doute cette différence pb de visibilité équivalent du #externe en
C ?? qui fait que cela ne fonctionne pas.

Qu'en pensez vous ?

cdlt

"papou" a écrit :

Bonjour
Testé avec succès sur Excel 2003 SP2 :
Function Evalueformule(Formule)
ActiveCell.FormulaLocal = Formule
End Function

Sub testEvalueFormule()
Evalueformule "=SOMME(A1:A50)"
End Sub

Cordialement
PAscal

"lion10" a écrit dans le message de news:

> bonjour
>
> je planche tjs sur la possibilité d'exécuter une formule récupérée sous
> forme de texte afin que sous excell lorsque je taperais "=evalueformule(
> xxxx)" la cellule affiche le résultat de la fonction x.
>
> j'ai recherché sur le net mais mes essais restent sans résultat je
> récupère
> tjs #erreur !!
>
> J'ai mis dans un module contenant déja une autre fonction qui marche :
> Function Evalueformule(x)
> ActiveCell.Formula = x
> End Function
>
> J'ai essayé avec formulalocal, formula en rajoutant aussi R1C1 et même
> avec
> une chaine x passant en paramètre bêtement ¡*a2
>
> Ma fonction est dans le même module qu'une fonction qui fonctionne, ce ne
> doit pas être un pb de visibilité export ??
>
> Faut il déclarer une variable x local pour le paramètre x ?
>
> Il semblerait qu'il faut pour certains mettre le nom de la fonction en
> anglais, mais j'ai cru comprendre que ce n'est pas le cas si on met local.
> Du reste pour une fonction simple * il ne doit pas y avoir de pb.
>
> D'avance merci
>
>
>





Avatar
papou
Re
Donc si je comprends bien, tu cherches (excuse-moi pour le tu) à inscrire le
résultat d'une formule dans une cellule ?
Si c'est bien ça, alors je ferai comme ceci :
Function Evalueformule(Cellule As Range, Formule As String)
Cellule.Value = Evaluate(Formule)
End Function
Sub testEvalueFormule()
Evalueformule Range(ActiveCell.Address), "SUM(A1:A50)"
End Sub

Cordialement
Pascal

"lion10" a écrit dans le message de news:

Bonjour

je vois une différence / ce que j'ai fait :
-Pour vous une fonction evalueformule est appelée par la fonction texte
avec
une chaine de caractère entre guillemet ( oubli parenthèse je pense).

Pour moi j'ai cette fonction évalueformule dans un moidule vb et ensuite
je
l'appelle dans le classeur excel en mettant =evalueformule(xx) dans une
cellule.

C'est sans doute cette différence pb de visibilité équivalent du #externe
en
C ?? qui fait que cela ne fonctionne pas.

Qu'en pensez vous ?

cdlt

"papou" a écrit :

Bonjour
Testé avec succès sur Excel 2003 SP2 :
Function Evalueformule(Formule)
ActiveCell.FormulaLocal = Formule
End Function

Sub testEvalueFormule()
Evalueformule "=SOMME(A1:A50)"
End Sub

Cordialement
PAscal

"lion10" a écrit dans le message de
news:

> bonjour
>
> je planche tjs sur la possibilité d'exécuter une formule récupérée sous
> forme de texte afin que sous excell lorsque je taperais
> "=evalueformule(
> xxxx)" la cellule affiche le résultat de la fonction x.
>
> j'ai recherché sur le net mais mes essais restent sans résultat je
> récupère
> tjs #erreur !!
>
> J'ai mis dans un module contenant déja une autre fonction qui marche :
> Function Evalueformule(x)
> ActiveCell.Formula = x
> End Function
>
> J'ai essayé avec formulalocal, formula en rajoutant aussi R1C1 et même
> avec
> une chaine x passant en paramètre bêtement ¡*a2
>
> Ma fonction est dans le même module qu'une fonction qui fonctionne, ce
> ne
> doit pas être un pb de visibilité export ??
>
> Faut il déclarer une variable x local pour le paramètre x ?
>
> Il semblerait qu'il faut pour certains mettre le nom de la fonction en
> anglais, mais j'ai cru comprendre que ce n'est pas le cas si on met
> local.
> Du reste pour une fonction simple * il ne doit pas y avoir de pb.
>
> D'avance merci
>
>
>







Avatar
lion10
bonjour papou

j'ai fait l'essai et cela ne marche pas.
je reformule
dans une cellule du tableur excell A1 par ex il y a une valeur sous forme de
texte ou résultat d'une formule précédente qu'importe qui commence par xxxx
où xxx comprend une formule excell.
en a2 je cré une chaîne en concaténant A1 et l'opérateur égale en début.
en a3 je tape sous le tableur =evalueformule( a2)
ensuite qd cela fonctenera je taperai directement en a3 =evalueformule("=" &
a1)

et j'attends donc de voir le résultat de la formule mise frappé dans a1 en
a3 voila j'en demande pas plus. Après la formule pourra évoluer et être plus
ou moins complexe.

cdlt lion10

"papou" a écrit :

Re
Donc si je comprends bien, tu cherches (excuse-moi pour le tu) à inscrire le
résultat d'une formule dans une cellule ?
Si c'est bien ça, alors je ferai comme ceci :
Function Evalueformule(Cellule As Range, Formule As String)
Cellule.Value = Evaluate(Formule)
End Function
Sub testEvalueFormule()
Evalueformule Range(ActiveCell.Address), "SUM(A1:A50)"
End Sub

Cordialement
Pascal

"lion10" a écrit dans le message de news:

> Bonjour
>
> je vois une différence / ce que j'ai fait :
> -Pour vous une fonction evalueformule est appelée par la fonction texte
> avec
> une chaine de caractère entre guillemet ( oubli parenthèse je pense).
>
> Pour moi j'ai cette fonction évalueformule dans un moidule vb et ensuite
> je
> l'appelle dans le classeur excel en mettant =evalueformule(xx) dans une
> cellule.
>
> C'est sans doute cette différence pb de visibilité équivalent du #externe
> en
> C ?? qui fait que cela ne fonctionne pas.
>
> Qu'en pensez vous ?
>
> cdlt
>
> "papou" a écrit :
>
>> Bonjour
>> Testé avec succès sur Excel 2003 SP2 :
>> Function Evalueformule(Formule)
>> ActiveCell.FormulaLocal = Formule
>> End Function
>>
>> Sub testEvalueFormule()
>> Evalueformule "=SOMME(A1:A50)"
>> End Sub
>>
>> Cordialement
>> PAscal
>>
>> "lion10" a écrit dans le message de
>> news:
>>
>> > bonjour
>> >
>> > je planche tjs sur la possibilité d'exécuter une formule récupérée sous
>> > forme de texte afin que sous excell lorsque je taperais
>> > "=evalueformule(
>> > xxxx)" la cellule affiche le résultat de la fonction x.
>> >
>> > j'ai recherché sur le net mais mes essais restent sans résultat je
>> > récupère
>> > tjs #erreur !!
>> >
>> > J'ai mis dans un module contenant déja une autre fonction qui marche :
>> > Function Evalueformule(x)
>> > ActiveCell.Formula = x
>> > End Function
>> >
>> > J'ai essayé avec formulalocal, formula en rajoutant aussi R1C1 et même
>> > avec
>> > une chaine x passant en paramètre bêtement ¡*a2
>> >
>> > Ma fonction est dans le même module qu'une fonction qui fonctionne, ce
>> > ne
>> > doit pas être un pb de visibilité export ??
>> >
>> > Faut il déclarer une variable x local pour le paramètre x ?
>> >
>> > Il semblerait qu'il faut pour certains mettre le nom de la fonction en
>> > anglais, mais j'ai cru comprendre que ce n'est pas le cas si on met
>> > local.
>> > Du reste pour une fonction simple * il ne doit pas y avoir de pb.
>> >
>> > D'avance merci
>> >
>> >
>> >
>>
>>
>>





Avatar
FS
Si j'ai bien compris :
Dans un module ordinaire du classeur :

'============== Function Eval(S)
Application.Volatile
Eval = Evaluate(CStr(S))
End Function
'==============
En A1 (par exemple):
a2+a5

En A2 :
=Eval(a1)

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

lion10 a écrit :
bonjour papou

j'ai fait l'essai et cela ne marche pas.
je reformule
dans une cellule du tableur excell A1 par ex il y a une valeur sous forme de
texte ou résultat d'une formule précédente qu'importe qui commence par xxxx
où xxx comprend une formule excell.
en a2 je cré une chaîne en concaténant A1 et l'opérateur égale en début.
en a3 je tape sous le tableur =evalueformule( a2)
ensuite qd cela fonctenera je taperai directement en a3 =evalueformule("=" &
a1)

et j'attends donc de voir le résultat de la formule mise frappé dans a1 en
a3 voila j'en demande pas plus. Après la formule pourra évoluer et être plus
ou moins complexe.

cdlt lion10

"papou" a écrit :

Re
Donc si je comprends bien, tu cherches (excuse-moi pour le tu) à inscrire le
résultat d'une formule dans une cellule ?
Si c'est bien ça, alors je ferai comme ceci :
Function Evalueformule(Cellule As Range, Formule As String)
Cellule.Value = Evaluate(Formule)
End Function
Sub testEvalueFormule()
Evalueformule Range(ActiveCell.Address), "SUM(A1:A50)"
End Sub

Cordialement
Pascal

"lion10" a écrit dans le message de news:

Bonjour

je vois une différence / ce que j'ai fait :
-Pour vous une fonction evalueformule est appelée par la fonction texte
avec
une chaine de caractère entre guillemet ( oubli parenthèse je pense).

Pour moi j'ai cette fonction évalueformule dans un moidule vb et ensuite
je
l'appelle dans le classeur excel en mettant =evalueformule(xx) dans une
cellule.

C'est sans doute cette différence pb de visibilité équivalent du #externe
en
C ?? qui fait que cela ne fonctionne pas.

Qu'en pensez vous ?

cdlt

"papou" a écrit :

Bonjour
Testé avec succès sur Excel 2003 SP2 :
Function Evalueformule(Formule)
ActiveCell.FormulaLocal = Formule
End Function

Sub testEvalueFormule()
Evalueformule "=SOMME(A1:A50)"
End Sub

Cordialement
PAscal

"lion10" a écrit dans le message de
news:

bonjour

je planche tjs sur la possibilité d'exécuter une formule récupérée sous
forme de texte afin que sous excell lorsque je taperais
"=evalueformule(
xxxx)" la cellule affiche le résultat de la fonction x.

j'ai recherché sur le net mais mes essais restent sans résultat je
récupère
tjs #erreur !!

J'ai mis dans un module contenant déja une autre fonction qui marche :
Function Evalueformule(x)
ActiveCell.Formula = x
End Function

J'ai essayé avec formulalocal, formula en rajoutant aussi R1C1 et même
avec
une chaine x passant en paramètre bêtement ¡*a2

Ma fonction est dans le même module qu'une fonction qui fonctionne, ce
ne
doit pas être un pb de visibilité export ??

Faut il déclarer une variable x local pour le paramètre x ?

Il semblerait qu'il faut pour certains mettre le nom de la fonction en
anglais, mais j'ai cru comprendre que ce n'est pas le cas si on met
local.
Du reste pour une fonction simple * il ne doit pas y avoir de pb.

D'avance merci