calc : question de formatage de nombre

Bonjour

je cherche à formater des cellules numeriques suivant la regle suivante

- si le nombre n'a pas de decimale, on l'affiche tel quel
- si le nombre a au moins une decimale, on l'affiche avec deux decimales

exemple
12 --> 12
1,2 --> 1,20
1,23 --> 1,23

Ce formatage est pour etre intégré dans un style de cellule

apres un moment de recherche infructueuse, je me retourne vers vous

une suggestion ?

merci beaucoup

laurent

à défaut de style, peut-être avec une formule : =SI(A1-ARRONDI.INF(A1)>0,TEXTE(A1;"# ##0,00");TEXTE(A1;"# ##0"))

Bonjour Laurent,

De : Laurent Godard [mailto:oooconv@free.fr]
Envoyé : vendredi 18 février 2011 15:39
À : users@fr.libreoffice.org
Objet : [fr-users] calc : question de formatage de nombre

Bonjour

je cherche à formater des cellules numeriques suivant la regle suivante

- si le nombre n'a pas de decimale, on l'affiche tel quel
- si le nombre a au moins une decimale, on l'affiche avec deux decimales

exemple
12 --> 12
1,2 --> 1,20
1,23 --> 1,23

Ce formatage est pour etre intégré dans un style de cellule

Sans formatage conditionnel ? Je doute que ce soit faisable dans un style
unique pour les deux.
En formatage conditionnel, il suffit de tester la condition =ENT(A1)=A1
Mais je ne pense pas que ce soit ça que tu cherches.

apres un moment de recherche infructueuse, je me retourne vers vous

une suggestion ?

merci beaucoup

laurent

Michel

suite à l'intervention de Michel, une formule plus propre : =SI(A1=ENT(A1);TEXTE(A1;"# ##0");TEXTE(A1;"# ##0,00"))
ça fonctionne, mais ça fait moche. Pourquoi des formats différents ? (si tu me permets)
cordialement,
Pierre

Bonjour,

Message du 18/02/11 15:49
De : "Laurent Godard"
A : users@fr.libreoffice.org
Copie à :
Objet : [fr-users] calc : question de formatage de nombre

Bonjour

je cherche à formater des cellules numeriques suivant la regle suivante

- si le nombre n'a pas de decimale, on l'affiche tel quel
- si le nombre a au moins une decimale, on l'affiche avec deux decimales

exemple
12 --> 12
1,2 --> 1,20
1,23 --> 1,23

Ce formatage est pour etre intégré dans un style de cellule

apres un moment de recherche infructueuse, je me retourne vers vous

une suggestion ?

merci beaucoup

laurent

Nouveauté LibO (et aussi OOo 3.3 je crois), tu décoches l'option Limiter les décimales....
dans Outils > Options > LibreOffice Calc > Calculer.
Ainsi le nombre de décimales est celui de la saisie.

Gérard

Suite ...
... pour ne pas rester sur la faim, même si ça ne répond pas à la question
initiale.

De : Pierre DE SAINT BLANQUAT [mailto:pierre.de-saint-
blanquat@direccte.gouv.fr]
Envoyé : vendredi 18 février 2011 16:12

suite à l'intervention de Michel, une formule plus propre :
=SI(A1=ENT(A1);TEXTE(A1;"# ##0");TEXTE(A1;"# ##0,00"))
ça fonctionne, mais ça fait moche. Pourquoi des formats différents ? (si
tu me permets)
cordialement,
Pierre

La formule est à utiliser dans le formatage conditionnel avec les deux
styles 0_déc et 2_déc créés à cet effet. Le mieux est de voir le petit
exemple que je me suis amusé à faire:
http://www.cijoint.fr/cjlink.php?file=cj201102/ciju45GBLb.ods

Bonne journée,

Michel

Gérard Fargeot wrote:

Bonjour,

Message du 18/02/11 15:49
De : "Laurent Godard"
A : users@fr.libreoffice.org
Copie à :
Objet : [fr-users] calc : question de formatage de nombre

Bonjour

je cherche à formater des cellules numeriques suivant la regle suivante

- si le nombre n'a pas de decimale, on l'affiche tel quel
- si le nombre a au moins une decimale, on l'affiche avec deux decimales

exemple
12 --> 12
1,2 --> 1,20
1,23 --> 1,23

Ce formatage est pour etre intégré dans un style de cellule

apres un moment de recherche infructueuse, je me retourne vers vous

une suggestion ?

merci beaucoup

laurent

Nouveauté LibO (et aussi OOo 3.3 je crois), tu décoches l'option Limiter
les décimales....
dans Outils > Options > LibreOffice Calc > Calculer.
Ainsi le nombre de décimales est celui de la saisie.

Gérard

Désolé, j'avais lu en diagonale. Je croyais que tu voulais afficher le
nombre de décimales saisies.
Bon, je reviens me coucher. :slight_smile:

Gérard

Bonjour Michel

Sans formatage conditionnel ? Je doute que ce soit faisable dans un style
unique pour les deux.
En formatage conditionnel, il suffit de tester la condition =ENT(A1)=A1
Mais je ne pense pas que ce soit ça que tu cherches.

c'est déjà une piste
mais mon but etait de faire le minimum de boulot et de mettre dans mon
style une condition (un peu dans l'esprit du passage en rouge si negatif)

j'ai plusieurs milliers de cellules concernées dans des dizaines de
fchiers ods differents
alors certes en faisant une petit macro je devrait pouvoir m'en sortir
mais je pouvais faire plus simple en ne modifiant que le style ca
m'arrangerait :wink:

en tout cas merci

Laurent

la solution envoyée par Michel RUDELLE fonctionne :

La formule est à utiliser dans le formatage conditionnel avec les deux
styles 0_déc et 2_déc créés à cet effet. Le mieux est de voir le petit
exemple que je me suis amusé à faire:
http://www.cijoint.fr/cjlink.php?file=cj201102/ciju45GBLb.ods

Bonne journée,

Michel

Encore une fois, ça fonctionne, mais ça fait moche. Pourquoi des formats différents ? (si
tu me permets)
cordialement,
Pierre

Bonsoir Laurent,

Ma solution, te donne le nombre de décimales. A toi ensuite d'adapter suivant besoins :
=SI(ESTERREUR(TROUVE(","; A1)); 0; (NBCAR(A1) - TROUVE(","; A1)))
si ta valeur est en A1
Testé sur la dernière version Libo.

Bon surf,
Christian

Bonsoir,

Je le traiterais par macro activée à l'ouverture, ou à l'intégration de nouvelles données, ou avec un listener, ou...

Mais bon, je suis un noob qui est loin de maîtriser les style et autres formules alambiqués dans calc (et même loin de maîtriser l'API)...

cOOordialement

Bonsoir,

Bonjour

je cherche à formater des cellules numeriques suivant la regle suivante

- si le nombre n'a pas de decimale, on l'affiche tel quel
- si le nombre a au moins une decimale, on l'affiche avec deux decimales

exemple
12 --> 12
1,2 --> 1,20
1,23 --> 1,23

Ce formatage est pour etre intégré dans un style de cellule

apres un moment de recherche infructueuse, je me retourne vers vous

une suggestion ?

Tout dépend si tu peux modifier le contenu des cellules ou pas... quoique
...

si oui, définir un style "virgule" (par exemple) avec le format au bon
nombre de virgule souhaité et faire un rechercher-remplacer :
rechercher : ([:digit:]+,[:digit:]+)
remplacer : =&+STYLE("virgule")
[x] expressions régulières
[tout remplacer]

si non, tu refais un rechercher remplacer à nouveau avec :
rechercher : =(.+)\+style\("virgule"\)
remplacer : $1
[x] expressions régulières
[tout remplacer]

parce que j'ai remarque que le style une fois appliqué via la formule
+style() reste activée quand on l'enlève de la cellule :wink:

merci beaucoup

De rien...
si ça te convient :wink:
Yves