Date: prev next · Thread: first prev next last
2017 Archives by date, by thread · List index


Tout d'abord,
chapeau bas, l'artiste !
Je planche sur ce trucs depuis trois semaines, et je n'étais pas arrivé à ta cheville !
Vraiment, bravo. Et ça va m'aider.
Pour info et ceux que ça intéressent, j'explique ce que j'ai besoin de faire : Dans le cadre d'un petit programme qui aléatoirise des documents (Doc Alea, cf ici :http://scolamath.free.fr/pedagogie/OutilLibreOffice/), je dois transformer un document writer et tout ce qu'il contient en code texte brut. C'est beaucoup plus facile, ensuite, de traiter des commandes spécifiques créées par soi-même (genre /t{a;b;c} pour tirer au hasard entre a, b ou c, par exemple). Ensuite, si le texte qui traduit la structure du tableau est bien codé, il ne reste plus qu'à reconstruire le tableau à partir de ce codage, après avoir traité entre temps les instructions d'aléatoirisation ou de calcul. J'y arrive pour les cadres, les tableaux réguliers, les formules de math, même les images (je sauvegarde l'image). Mais j'étais tombé sur un os avec les tableaux irréguliers : c'est vraiment tordu. Par exemple, en se déplaçant dans le tableau ci-dessous de gauche à droite, ligne par ligne, on peut avoir A1,B1,C1,D1,E1, puis A2,B2,C2,D2,E2,F2,G2,H2, puis A3,F2!,G2!,D3!,E3!, puis A4,B4,C4,D4,G2!,F4,G4.
Le tout, sans savoir où c'est fusionné !


Je voudrais donc transformer ce codage en
A1,A1,C1,C1,C1,F1,F1,H1,I1
A2,B2,C2,D2,E2,F2,G2,H2,H2
A3,A3,A3,A3,A3,F2,G2,H3,I3
A4,B4,B4,B4,E4,F4,G2,H4,I4
Ce qui, me semble-t-il, est plus logique et permet de reconstruire le tableau d'origine avec les fusions adéquates.

Comme tu peux le voir, ton programme permet de s'y retrouver un peu sur cet exemple (même si il coince à cause du nombre de lignes qui varie, en raison de fusions verticales, mais c'est pas grave : ton code me donne le principe).

Donc, merci encore.

Cordialement,
O.J.


Le 22/04/2017 à 22:42, Jean-Francois Nifenecker a écrit :
Désolé pour la réponse tardive... le temps de rechercher et tester :)

Le 19/04/2017 à 07:49, jaccomard@free.fr a écrit :
Merci pour votre aide, tout  d’abord.
L idée est bonne.
En revanche, il me semble que ceci ne fonctionne que sous calc. Je cherche à faire la même chose sous Writer.

Oooouuups ! Pourtant c'est écrit là-haut : Writer... pfff... /o\

Tout d'abord, on remarque que le comportement d'un tableau Writer diffère sensiblement de celui d'une feuille Calc :(
Mon joli speech précédent tombe donc à l'eau.

En particulier, lorsque des cellules sont fusionnées, elles sont renumérotées (voir la barre d'état) : en fusionnant A1 et B1, la fusion est identifiée A1 et la cellule autrefois identifiée B1 devient C1... Bigre.


Maintenant, pour ce qui est de mesurer la largeur des colonnes (ta question)... Ça se corse comme on dit à Ajaccio.


La manière de mémoriser les largeurs des colonnes d'un tableau Writer est un peu particulière : l'objet TableColumnSeparators définit ces largeurs (entre autres choses) mais relativement aux précédentes... D'où une gymnastique spécifique pour retrouver la largeur de chaque colonne.

Glaçage sur le gâteau, les largeurs ne sont pas exprimées dans une grandeur connue mais relativement les unes aux autres et à la largeur totale (qui peut d'ailleurs être soit absolue soit relative !). Il faut donc ensuite appliquer les règles de trois qui vont bien.

Cerise sur le glaçage, les tableaux irréguliers (ton cas) nécessitent de s'intéresser aux lignes prises individuellement et non plus au tableau dans sa globalité (TableColumnSeparators différents).

Bref, cette histoire n'est pas pour les chauves (qui ne peuvent pas/plus s'arracher de cheveux).

Ouf.


J'ai déposé une démo ici :
https://framadrop.org/r/uXWeHVzLIW#iNQgVE7MBFEfTjOGSc4FK2RhX6TVrJVQEZ+QQD6kEJ0=



En espérant que ça aidera,




---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus

--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être 
supprimés

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.