Problème de formule

Bonjour

Voici une nouvelle question envoyée à l'aide du formulaire de demande d'aide (http://fr.libreoffice.org/get-help/poser-une-question/).
Si vous répondez, merci de penser à utiliser la fonction "répondre à tous" de votre logiciel de courrier électronique de façon que le demandeur reçoive une copie de votre réponse.

Email: - squall013@hotmail.com
Sujet: - Problème de formule
Question: - Bonjour,

Je travaille avec une personne qui utilise Excel et lorsqu'elle m'envoie des fichiers il peut y avoir des formules qui ressemblent à ça :
=CONCATENER(
A1;
B1)

Hors Libreoffice n'arrive pas à lire ces formules avec retour chariot, il m'indique Err :501.
Existe-t-il une solution quelque part ? J'ai cherché mais je n'ai trouvé aucune solution.
Est-ce un bug ?

Merci pour votre attention.

Cordialement,

Bonjour

Voici une nouvelle question envoyée à l'aide du formulaire de demande d'aide (http://fr.libreoffice.org/get-help/poser-une-question/).

Sujet: - Problème de formule
Question: - Bonjour,

Je travaille avec une personne qui utilise Excel et lorsqu'elle m'envoie des fichiers il peut y avoir des formules qui ressemblent à ça :
=CONCATENER(
A1;
B1)

Hors Libreoffice n'arrive pas à lire ces formules avec retour chariot, il m'indique Err :501.
Existe-t-il une solution quelque part ? J'ai cherché mais je n'ai trouvé aucune solution.
Est-ce un bug ?

LibreOffice et Excel ne traitent pas les formules exactement de la même façon et, apparemment, dans ce cas précis LibreOffice ne considère que la première ligne de la formule c'est pourquoi il affiche cette erreur car les éléments qui doivent lui servir à produire le résultat.

En théorie, de toute façon, on ne devrait pas écrire une formule sur plusieurs lignes d'ailleurs (elles se font d'elles même).

Il n'y a pas, à ma connaissance, de solution sauf à coller la formule dans la barre de formule, ce qui suppose que vous l'ayez (la formule donc) par ailleurs et que vous n'en ayez pas trop à traiter où encore à demander à vos interlocuteurs de mettre ses formules sur une seule ligne.

Merci pour votre attention.

Si vous répondez, merci de penser à utiliser la fonction "répondre à tous" de votre logiciel de courrier électronique de façon que la liste users reçoive une copie de votre réponse.

Bonjour,

Je travaille avec une personne qui utilise Excel et lorsqu'elle
m'envoie des fichiers il peut y avoir des formules qui ressemblent à
ça : =CONCATENER(
A1;
B1)

Hors Libreoffice n'arrive pas à lire ces formules avec retour
chariot, il m'indique Err :501. Existe-t-il une solution quelque part
? J'ai cherché mais je n'ai trouvé aucune solution. Est-ce un bug ?

Quelle est votre version de LibreOffice ? Sous quel système ?
Sous quel format recevez-vous les fichiers ? xls ? xslx ? autre chose ?
Avec quelle version d'Excel sont-ils générés ?

Si vous répondez, merci de penser à utiliser la fonction "répondre à
tous" de votre logiciel de courrier électronique de façon que le
demandeur reçoive une copie de votre réponse.

Bonjour,

Merci pour votre/vos réponse(s). Ici, dans mon exemple il n'y a pas
vraiment d'utilité à avoir une formule sur plusieurs lignes. Mais
quand on commence à avoir des formules à rallonge, imbriquées les
unes dans les autres, il peut devenir intéressant de mettre des
retours à la ligne pour se repérer et gagner en lisibilité dans les
différentes formules de la cellule.

On gagne plus en lisibilité dans les formules en travaillant avec des
noms qu'avec des retours à la ligne et on gagne en fiabilité et en
interopérabilité bien sûr.

Bonjour,

Merci pour votre/vos réponse(s).
Ici, dans mon exemple il n'y a pas vraiment d'utilité à avoir une formule sur plusieurs lignes.
Mais quand on commence à avoir des formules à rallonge, imbriquées les unes dans les autres,
il peut devenir intéressant de mettre des retours à la ligne pour se repérer et gagner en lisibilité dans les différentes formules de la cellule.

Je pense que ça pourrait être une amélioration à apporter à LibreOffice.

Cordialement,

Qu'appelez-vous travailler avec des noms ?
Voici un exemple de formule "à rallonge" :
=CONCATENER(
(SI(ESTVIDE(IT5);"";(CONCATENER(IU5;" x ";IT5;"/";IV5;" ( ";(GAUCHE(AO5;30));"... )";))));
(SI(ESTVIDE(IX5);"";(CONCATENER(" + ";IY5;" x ";IX5;"/";IZ5;" ( ";(GAUCHE(BC5;30));"... )";))));
(SI(ESTVIDE(JB5);"";(CONCATENER(" + ";JC5;" x ";JB5;"/";JD5;" ( ";(GAUCHE(BQ5;30));"... )";))));
(SI(ESTVIDE(JF5);"";(CONCATENER(" + ";JG5;" x ";JF5;"/";JH5;" ( ";(GAUCHE(CE5;30));"... )";))));
(SI(ESTVIDE(JJ5);"";(CONCATENER(" + ";JK5;" x ";JJ5;"/";JL5;" ( ";(GAUCHE(CS5;30));"... )";))));
(SI(ESTVIDE(JN5);"";(CONCATENER(" + ";JO5;" x ";JN5;"/";JP5;" ( ";(GAUCHE(DG5;30));"... )";))));
(SI(ESTVIDE(JR5);"";(CONCATENER(" + ";JS5;" x ";JR5;"/";JT5;" ( ";(GAUCHE(DU5;30));"... )";))));
(SI(ESTVIDE(JX5);"";(CONCATENER(" + ";"/";JX5))));
)

Qu'appelez-vous travailler avec des noms ?
Voici un exemple de formule "à rallonge" :
=CONCATENER(
(SI(ESTVIDE(IT5);"";(CONCATENER(IU5;" x ";IT5;"/";IV5;" (
";(GAUCHE(AO5;30));"... )";))));
(SI(ESTVIDE(IX5);"";(CONCATENER(" + ";IY5;" x ";IX5;"/";IZ5;" (
";(GAUCHE(BC5;30));"... )";))));
(SI(ESTVIDE(JB5);"";(CONCATENER(" + ";JC5;" x ";JB5;"/";JD5;" (
";(GAUCHE(BQ5;30));"... )";))));
(SI(ESTVIDE(JF5);"";(CONCATENER(" + ";JG5;" x ";JF5;"/";JH5;" (
";(GAUCHE(CE5;30));"... )";))));
(SI(ESTVIDE(JJ5);"";(CONCATENER(" + ";JK5;" x ";JJ5;"/";JL5;" (
";(GAUCHE(CS5;30));"... )";))));
(SI(ESTVIDE(JN5);"";(CONCATENER(" + ";JO5;" x ";JN5;"/";JP5;" (
";(GAUCHE(DG5;30));"... )";))));
(SI(ESTVIDE(JR5);"";(CONCATENER(" + ";JS5;" x ";JR5;"/";JT5;" (
";(GAUCHE(DU5;30));"... )";))));
(SI(ESTVIDE(JX5);"";(CONCATENER(" + ";"/";JX5))));
)

-- Découpez cette horreur en sous-formules (dans des cellules
intermédiaires) ; dans votre cas il y aurait 8 cellules intermédiaires.
Ensuite vous cachez les colonnes/lignes qui contiennent ces calculs
intermédiaires.

-- Remplacez la fonction CONCATENER() par l'opérateur & (en plus il
semble qu'il y ait des parenthèses en surnombre dans vos formules)

La première ligne donne ceci :
SI(ESTVIDE(IT5) ; "" ; IU5 & " x " & IT5 & "/" & IV5 & " ( " &
(GAUCHE(AO5;30)) & "...)")

On peut mettre des espaces autour des opérateurs, ce qui améliore la
lisibilité.

On pourrait mettre la troisième partie du SI() dans une cellule séparée
(disons ZZ5), ce qui donnerait :
= SI(ESTVIDE(IT5) ; "" ; ZZ5)
Avec, dans ZZ5
= IU5 & " x " & IT5 & "/" & IV5 & " ( " & (GAUCHE(AO5;30)) & "...)"

Et si on nomme IT5 en "nombre_enfants" et ZZ5 en "age_du_capitaine", on
obtient :
= SI(ESTVIDE(nombre_enfants) ; "" ; age_du_capitaine)

C'est pas plus facile à lire/comprendre ?

-> On peut (doit !) nommer les cellules/plages/colonnes/lignes afin de
rendre les formules lisibles et auto-documentées.

Je pense que ça pourrait être une amélioration à apporter à
LibreOffice.

Aussi bon que puisse être l'outil, il faut aussi que *l'utilisateur*
s'attache à rendre son travail *lisible et documenté*.

Et c'est vrai que c'est un vrai effort à faire qui n'est que trop
rarement compris/fait.
En effet, si le travail se limite à écrire des formules aujourd'hui sans
faire en sorte de préparer les évolutions toujours possibles, alors il
suffira d'un rien pour devoir mettre le classeur à la poubelle et tout
recommencer : changement dans l'organisation du service (le créateur
s'en va), modifications réglementaires (ajout d'une condition),
évolutions de la chaîne de traitement (un autre service doit prendre le
relais)...

Bon courage,

Pas sûre que ça soit arrivé à sa destination finale. Avec mes compléments.

Qu'appelez-vous travailler avec des noms ?
Voici un exemple de formule "à rallonge" :
=CONCATENER(
(SI(ESTVIDE(IT5);"";(CONCATENER(IU5;" x ";IT5;"/";IV5;" (
";(GAUCHE(AO5;30));"... )";))));
(SI(ESTVIDE(IX5);"";(CONCATENER(" + ";IY5;" x ";IX5;"/";IZ5;" (
";(GAUCHE(BC5;30));"... )";))));
(SI(ESTVIDE(JB5);"";(CONCATENER(" + ";JC5;" x ";JB5;"/";JD5;" (
";(GAUCHE(BQ5;30));"... )";))));
(SI(ESTVIDE(JF5);"";(CONCATENER(" + ";JG5;" x ";JF5;"/";JH5;" (
";(GAUCHE(CE5;30));"... )";))));
(SI(ESTVIDE(JJ5);"";(CONCATENER(" + ";JK5;" x ";JJ5;"/";JL5;" (
";(GAUCHE(CS5;30));"... )";))));
(SI(ESTVIDE(JN5);"";(CONCATENER(" + ";JO5;" x ";JN5;"/";JP5;" (
";(GAUCHE(DG5;30));"... )";))));
(SI(ESTVIDE(JR5);"";(CONCATENER(" + ";JS5;" x ";JR5;"/";JT5;" (
";(GAUCHE(DU5;30));"... )";))));
(SI(ESTVIDE(JX5);"";(CONCATENER(" + ";"/";JX5))));
)

-- Découpez cette horreur en sous-formules (dans des cellules
intermédiaires) ; dans votre cas il y aurait 8 cellules intermédiaires.
Ensuite vous cachez les colonnes/lignes qui contiennent ces calculs
intermédiaires.

On peut même le faire sur une autre feuille. Cette façon de découper la formule permet en outre de mieux contrôler sa validité puisque qu'on peut voir plus facilement là où ça pêche.

-- Remplacez la fonction CONCATENER() par l'opérateur & (en plus il
semble qu'il y ait des parenthèses en surnombre dans vos formules)

La première ligne donne ceci :
SI(ESTVIDE(IT5) ; "" ; IU5 & " x " & IT5 & "/" & IV5 & " ( " &
(GAUCHE(AO5;30)) & "...)")

On peut mettre des espaces autour des opérateurs, ce qui améliore la
lisibilité.

On pourrait mettre la troisième partie du SI() dans une cellule séparée
(disons ZZ5), ce qui donnerait :
= SI(ESTVIDE(IT5) ; "" ; ZZ5)
Avec, dans ZZ5
= IU5 & " x " & IT5 & "/" & IV5 & " ( " & (GAUCHE(AO5;30)) & "...)"

Et si on nomme IT5 en "nombre_enfants" et ZZ5 en "age_du_capitaine", on
obtient :
= SI(ESTVIDE(nombre_enfants) ; "" ; age_du_capitaine)

C'est pas plus facile à lire/comprendre ?

-> On peut (doit !) nommer les cellules/plages/colonnes/lignes afin de
rendre les formules lisibles et auto-documentées.

Pour compléter un article, absolument œcuménique, qui explique pourquoi et comment sur les deux suites bureautiques.

http://dutailly.net/tableurs-travailler-avec-des-noms/

Je pense que ça pourrait être une amélioration à apporter à
LibreOffice.

Aussi bon que puisse être l'outil, il faut aussi que *l'utilisateur*
s'attache à rendre son travail *lisible et documenté*.

Et c'est vrai que c'est un vrai effort à faire qui n'est que trop
rarement compris/fait.
En effet, si le travail se limite à écrire des formules aujourd'hui sans
faire en sorte de préparer les évolutions toujours possibles, alors il
suffira d'un rien pour devoir mettre le classeur à la poubelle et tout
recommencer : changement dans l'organisation du service (le créateur
s'en va), modifications réglementaires (ajout d'une condition),
évolutions de la chaîne de traitement (un autre service doit prendre le
relais)...

Surtout que ces fameux retours chariots sont non seulement interprétés différemment mais susceptibles aussi de l'être plus tard.

Il reste une solution si, vraiment, vraiment, on ne peut pas avoir autre chose qu'une longue formule épouvantable, c'est de l'écrire à part dans un éditeur de texte (par exemple Notepad++) et de la copier-coller dans le tableur ensuite. L'un des avantages de cette formule est qu'on peut garder ce fichier sous forme txt à part et y ajouter des commentaires.

Bref, il n'y a strictement aucune raison de recourir au bricolage des retour chariot.