Comment exécuter une formule créée par concaténation ?

Bonjour,
dans calc, après avoir créé une formule par concaténation, avec ou sans
"=" au début de la formule créée, j'obtiens le résultat de la
concaténation ; normal.
Comment faire en sorte que la formule créée s'exécute ?
Je pense à une fonction qui serait l'inverse de la fonction FORMULE.
Merci pour les idées.
Daniel

Bonsoir à tous,

Bon,.. alors je reformule :
Par exemple, j'ai en A1, le texte "SOMME(" : en B1 le texte "E1:E10" ;
en C1 le texte ")".
En A3, je rentre : =A1&B1&C1
  ou bien : ="="&A1&B1&C1

J'obtiens en A3 le texte "SOMME(E1:E10)" ou bien "=SOMME(E1:E10)"

Comment faire, en B1 ou ailleurs, pour que cette somme s'exécute ?

Merci pour vos idées.
Daniel

Je donne ma langue au chat.

JBF

Bonjour

une piste pour ton problème

je résume : en A3 il faut garder la formule ="="&A1&B1&C1 cette formule affichant le texte =SOMME(E1:E10)

tu sélectionnes la cellule A3 puis tu cliques sur l'icône copier (Ctrl-C)
ensuite tu sélectionnes une autre cellule, disons A5, et tu cliques sur la petite flèche à droite de l'icône coller, dans le menu contextuel
tu choisis Texte non formaté et tu obtiens la somme de la plage E1:E10 dans la cellule A5
C'est ce qui se passe chez moi (Windows Vista et LO 4.13.2)

Cordialement

Bonjour,

-----Message d'origine-----
De : jadot.d@wibox.fr [mailto:jadot.d@wibox.fr]
Envoyé : vendredi 6 décembre 2013 22:06
À : users@fr.libreoffice.org
Objet : Re: [fr-users] Comment exécuter une formule créée par
concaténation ?

Bonsoir à tous,

Bon,.. alors je reformule :
Par exemple, j'ai en A1, le texte "SOMME(" : en B1 le texte "E1:E10" ;
en C1 le texte ")".
En A3, je rentre : =A1&B1&C1
  ou bien : ="="&A1&B1&C1

J'obtiens en A3 le texte "SOMME(E1:E10)" ou bien "=SOMME(E1:E10)"

Comment faire, en B1 ou ailleurs, pour que cette somme s'exécute ?

Je ne connais pas de solution répondant à la question. On peut procéder
autrement mais tout dépend du besoin derrière la demande.
Par exemple, si la fonction est toujours la même et si on veut simplement
utiliser des plages générées par ailleurs sous forme de texte, on utilisera
la fonction INDIRECT.

=SOMME(INDIRECT(A1)) avec A1 contenant "B1:B3" donnera la somme de B1 à B3,
et le contenu de A1 peut être généré par tout moyen.

Et si ce n'est pas toujours la même fonction, il se peut que la fonction
SOUS.TOTAL puise servir puisqu'elle peut remplacer 11 autres fonctions à
elle seule.

Michel

Bonjour

Le problème est bien sûr l'interprétation de la fonction choisie
(somme, moyenne, etc.)

Une solution est de recourir à une fonction "programmée" comme
dans l'exemple joint.

Nota: cet exemple se limite aux fonctions SOMME, MOYENNE,
NB, MAX, MIN, NBVAL

Elle retourne #N/D dans les autres cas.

J'ai écrit ce programme un peu rapidement pour montrer ce qui
est possible. Il ne contient pas assez de contrôles (vérification que
la syntaxe de plage est correcte par exemple).

Il devrait être possible d'utiliser toutes les fonctions listées ici:
http://api.libreoffice.org/docs/idl/ref/namespacecom_1_1sun_1_1star_1_1sheet.html#ad184d5bd9055f3b4fd57ce72c781758d

mais certaines sont boguées:
https://bugs.freedesktop.org/show_bug.cgi?id=46119

Le passage de la fonction ALEA n'est pas nécessaire au calcul. Il ne
sert qu'à actualiser le calcul en cas de modification des données sans
devoir forcer le calcul par Ctrl+Maj+F9

EvalParComputeFunction.ods
<http://nabble.documentfoundation.org/file/n4087074/EvalParComputeFunction.ods>

Cordialement
Pierre-Yves

Bonsoir,
merci à tous pour vos recherches et différentes propositions.
Effectivement, comme le dit très bien Michel, on peut toujours procéder
autrement mais tout dépend du besoin derrière la demande.
La macro de Pierre-Yves est une excellente idée, mais elle répond à un
type de fonctions et à une configuration adaptée de la feuille de
calcul.
De la même manière, les fonctions INDIRECT et autre DDE permettent
souvent de résoudre les situations, mais au cas par cas.
Ma demande est beaucoup plus générale, et c'est pour cela que je
n'avais pas donné d'exemple au départ.
Je rêve d'une véritable fonction, qui fasse l'inverse de la fonction
FORMULE, c'est à dire qui interprète n'importe quel texte commençant par
=, et créé par concaténation.
Cordialement.
Daniel.

PS : le chat n'a pas aimé la langue de Jean-Baptiste.
PS bis : Je n'ai pas la petite flèche dont parle Jacques, à droite de
Coller ; je suis sur LibreOffice 3.5 de Ubuntu.

Bonjour

La macro de Pierre-Yves .. répond à un type de fonctions et à une
configuration adaptée de la feuille de
calcul.

Oui

Je rêve d'une véritable fonction, qui fasse l'inverse de la fonction
FORMULE, c'est à dire qui interprète n'importe quel texte commençant par
=, et créé par concaténation.

Il est toujours possible de proposer une demande d'amélioration
pour une fonction du type EVAL

Ci-joint une autre piste sans macro (mais limitée à un "pré-calcul" pouvant
être masqué).

EvalParEquivIndex.ods
<http://nabble.documentfoundation.org/file/n4087167/EvalParEquivIndex.ods>

Cordialement
Pierre-Yves

pierre-yves samyn a écrit :

> Je rêve d'une véritable fonction, qui fasse l'inverse de la fonction
> FORMULE, c'est à dire qui interprète n'importe quel texte commençant par
> =, et créé par concaténation.

Il est toujours possible de proposer une demande d'amélioration
pour une fonction du type EVAL

Je trouverais effectivement cela intéressant.
J'ai également créé une macro (par enregistrement) qui reprend l'idée de
Jacques Lenglet (copier la cellule contenant le texte concaténé, puis
"texte non formaté" avec la petite flèche, que j'ai enfin trouvée à côté
de l'icône Coller.
Ca marche très bien sur plein d'essais différents ; il faut que je
creuse les macros pour mettre la cellule en argument.

Ci-joint une autre piste sans macro (mais limitée à un "pré-calcul" pouvant
être masqué).

EvalParEquivIndex.ods
<http://nabble.documentfoundation.org/file/n4087167/EvalParEquivIndex.ods>

Très rigolo. Il fallait y penser.
Merci encore pour tout ce temps et toutes ces bonnes idées.

Cordialement
Daniel