Rendre statique un formatage dynamique

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:: mountybike@gmail.com
Sujet:: Rendre statique un formatage dynamique
OS:: Linux
Version:: 5.4.x
Question:: Bonjour,
Je dois appliquer un formatage dynamique à une liste de cellules.
Problème: mon PC (très récent, pourtant), rame pendant près de 20 minutes pour calculer le rendu.
Dans le détails, si ça peut aider quelqu'un à améliorer les perfs futurs de LibreOffice, il s'agit d'un tableau d'environ 1500 lignes sur 150 colonnes.
Pour le formatage, j'ai des paquet d'environ 10 cellules sur une ligne qui doivent toutes prendre le style1 ou le style2, en fonction de la valeur d'une cellule bien précise du paquet. Le style est donc répété vers la droite et vers le bas, et j'utilise la condition "La formule est".

Bref, mon soucis est que mon PC mouline près de 20 minutes pour calculer le formatage, mais également, il se remet à mouliner à chaque enregistrement et ouverture de fichier. Et le scroll devient terriblement lent. Bref, LibreOffice n'est plus utilisable dans ces conditions.

A l'inverse, un formatage statique est très léger et fluide.
Mais il me faudrait sans doute toute une vie pour colorier à la main unes à unes, toutes les cellules de mon classeur. Sans compter les risques d'étourderies.

Alors ma question:
Est-il possible, dans LibreOffice, après que ce dernier ait mouliné 20 minutes pour calculer le formatage de chaque cellule, de rendre toutes ces couleurs statiques, et supprimer les conditions, afin que je puisse continuer de travailler avec mon fichier?

Si quelque connaît cette formule magique, par avance, merci.

Bonjour,

Je dois appliquer un formatage dynamique à une liste de cellules.

oui, vous parlez de ce qui est cinnu sous le nom de "Formatage conditionnel" (FC).

Problème: mon PC (très récent, pourtant), rame pendant près de 20 minutes pour calculer le rendu.
Dans le détails, si ça peut aider quelqu'un à améliorer les perfs futurs de LibreOffice, il s'agit d'un tableau d'environ 1500 lignes sur 150 colonnes.
Pour le formatage, j'ai des paquet d'environ 10 cellules sur une ligne qui doivent toutes prendre le style1 ou le style2, en fonction de la valeur d'une cellule bien précise du paquet. Le style est donc répété vers la droite et vers le bas, et j'utilise la condition "La formule est".

Bref, mon soucis est que mon PC mouline près de 20 minutes pour calculer le formatage, mais également, il se remet à mouliner à chaque enregistrement et ouverture de fichier. Et le scroll devient terriblement lent. Bref, LibreOffice n'est plus utilisable dans ces conditions.

Ama (et à mon expérience), le formatage conditionnel fonctionne bien tant que le nombre de cellules à mettre en forme est "réduit" (jusqu'à qq dizaines). Au-delà, en effet, les ressources sont très sollicitées.

Vérifiez cependant que le FC est bien organisé en allant à Format > Formatage conditionnel > Gérer

-> Assurez-vous que les plages de cellules à mettre en forme sont bien homogènes (pas de cellules unitaires). Une fragmentation des plages se produit lorsque l'on met le tableau au point (ajout de colonnes, recopie de mises en forme, etc.), fragmentation qui conduit à des temps de traitement allongés. Il est donc conseillé, après mise au point, de re-grouper les plages de FC.

A l'inverse, un formatage statique est très léger et fluide.
Mais il me faudrait sans doute toute une vie pour colorier à la main unes à unes, toutes les cellules de mon classeur. Sans compter les risques d'étourderies.

Alors ma question:
Est-il possible, dans LibreOffice, après que ce dernier ait mouliné 20 minutes pour calculer le formatage de chaque cellule, de rendre toutes ces couleurs statiques, et supprimer les conditions, afin que je puisse continuer de travailler avec mon fichier?

Je vois deux solutions :

1. Désactiver le recalcul automatique en temps normal (menu Données > Calculer > Calculer automatiquement) et ne le réactiver que lorsque le besoin s'impose. Mais ça induira alors l'effet constaté... :frowning:

2. Trouver une alternative.
Avez-vous essayé la fonction STYLE() dans les cellules à colorier ?

Exemple d'utilisation de la fonction STYLE()

En A1, écrire un nombre (exemple : 1)

En B1, une formule qui colorie cette même cellule B1 selon la valeur de A1.
Je considère que l'on dispose de deux styles "Mauvais" et "Bon" qui colorieront B1 différemment selon la valeur en A1.

En B1, la formule :
=SI(A1<10;STYLE("Mauvais");STYLE("Bon"))

Si la valeur en A1 est inférieure strictement à 10, on colorie B1 selon le style "Mauvais" ; pour les valeurs supérieures ou égales à 10, on colorie B1 selon le style "Bon".

Telle quelle, lorsque B1 ne contient pas de donnée, la formule ci-dessus provoque l'affichage d'une valeur 0 (zéro). Dans ce cas, pour la faire disparaître, englobez la formule dans la fonction T(), comme ceci :
=T(SI(A1<10;STYLE("Mauvais");STYLE("Bon")))

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 reçoive une copie de votre réponse.

Bien cordialement,

Bonjour,

C'est bien la fragmentation du FC qui est le problème. Parfois c'est facile
à résoudre car ces cellules - fragmentées dans "Gérer" - sont en fait
contigües, il suffit de les regrouper, d'où le conseil de J-F de repasser
sur les FC à la fin de la mise au point d'un classeur.

Il y a aussi le cas où ces cellules ne sont pas contigües, voire où toutes
ne sont pas soumises au même FC, là il faut un peu d'astuce, voici quelques
deux exemples simples:
- supposons une ligne sur deux avec des données auxquelles appliquer un FC
(sur des seuils numériques par exemple), l'autre ligne ne contenant que du
texte (des libellés), il faut appliquer le même FC à tout le tableau, les
lignes de texte ne seront pas affectées. Ce n'est pas intuitif, on penserait
perdre en rapidité en intégrant des cellules non concernées, mais c'est tout
le contraire :wink:
- sur ce même tableau, si les seuils objet du FC ne sont pas les mêmes pour
toutes les colonnes, reporter ces seuils dans lignes après ou avant le
tableau, et dans le FC faire référence à ces valeurs, le FC peut ainsi être
le même pour toutes les colonnes.

Il n'y a pas de méthode unique, ceci nécessite une réflexion et un peu
d'astuce en construisant le classeur mais j'y suis toujours arrivé avec au
plus 3 ou 4 plages.

Et il y a aussi comme indiqué par J-F la fonction STYLE

Cordialement,
Michel

Les FC sont effectivement très fragmenté, mais je ne vois rien dans le
volet pour les regrouper.
Mes FC sont toute uniques, que j'ai dupliqué en recopier la mise en forme.
Pour la duplication vers la droite, j'ai même dû éditer les conditions
à la main pour chaque colonne, puisque j'ai dû figer la colonne de
test. Donc je n'ai pas trouvé de formule universelle.
En gros, la formule est:
Plage: AL11:AR11
Condition1: la formule est $AN11="G"
Style: Good
Condition2: la formule est $AN11="B"
Style: Bad

Par contre, je vous remercie d'avoir attiré mon attention sur la
fonction STYLE, je ne la connaissais pas.

En fait, mes données sont généré par un petit soft dans le format CSV
puis importer dans LibreOffice.
Là, j'étais en train d'étudier pour générer ou modifier directement
les fichiers odf, mais avec STYLE, je vais pouvoir intégrer ça
directement dans le fichier csv et me faire gagner du temps, en
limitant les modifications dans mon programme.

Merci pour ça.

Bonsoir,
Quand on copie des cellules disposant d'un formatage conditionnel, la
description du formatage conditionnel se complexifie.
Solution : aller dans le menu Format / Formatage conditionnel / Gérer.
Exemple : dans un de mes tableaux j'ai le formatage conditionnel suivant :
Plage : A2:J2;A210:H212;I68:I95;I97:I212;A68:H209;A3:I67
Condition : ET($J2=0;$B2="M")
Il s'agit d'un formatage conditionnel que j'ai mis au point sur la ligne
2, puis recopié en-dessous, après quoi j'ai inséré et supprimé des
lignes. Je peux condenser ce formatage en :
Plage : A2:J212
Condition : ET($J2=0;$B2="M")
Bien entendu, la condition s'adapte aux lignes successives (le numéro de
colonne est fixe à cause du $, mais le numéro de ligne s'incrémente : 2,
3, ... , 212).
Après cette "simplification", le formatage conditionnel s'applique
quasi-instantanément.

Robert vous donne la réponse :slight_smile:
Il faut retaper à la main la bonne référence de plage.

Bien cordialement,

Ah, ok, très bien, j'y suis parvenue.
Je n'arrive pas à réunir les FC horizontalement, mais au moins j'ai pu
les réunir verticalement. Ce qui fait, que je n'ai plus qu'un
quinzaine de FC, une pour chaque paquet de colonnes. C'est beaucoup
plus claire.
Je suis content de connaître cette méthode à présent. Mais au final,
je préfère insérer le formatage dans le fichier csv, pour garder la
maitrise du style dans mon programme.

Merci pour tout ça.

Ah bin si, horizontalement aussi, j'ai pu réunir les formules.
J'avais pas noté les ; entre les plages, donné par Robert. Je savais
pas qu'ont pouvait faire ça.
Donc effectivement, là je n'ai plus qu'un unique formatage conditionnel.