3 messages in org.openoffice.fr.prog[prog] [Writer] Modifier les largeurs...
FromSent OnAttachments
Bernard MarcellyFeb 24, 2004 12:25 am 
dsi-stagiaireFeb 26, 2004 7:05 am 
Bernard MarcellyFeb 26, 2004 11:58 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:[prog] [Writer] Modifier les largeurs de colonnes de tableauActions...
From:Bernard Marcelly (marc@club-internet.fr)
Date:Feb 24, 2004 12:25:21 am
List:org.openoffice.fr.prog

Bonjour, Sur la liste use@fr.openoffice.org plusieurs personnes ont demandé comment changer par macro les largeurs de colonnes d'un tableau dans un document Writer.

Le point essentiel est que l'API n'a pas de notions de largeur de colonnes, mais raisonne en séparateurs de colonne. Modifier la largeur d'une colonne revient à déplacer le séparateur. Autre particularité, la position d'un séparateur n'est pas une dimension mais une proportion. La référence de cette proportion est appelée "somme relative". Enfin l'ensemble des séparateurs est un tableau de structures, ce qui nécessite des instructions un peu particulières pour le modifier.

Cet exemple insère un tableau en fin d'un document existant, puis change les positions de séparateur.

REM ***** BASIC *****

Option Explicit

Sub ReglerColonnesDeTableau Dim MonDocument As Object, MonTexte As Object Dim MonCurseur As Object, MaTable As Object Dim lesSeparateurs As Variant, largeur As Double

MonDocument = ThisComponent MonTexte = MonDocument.Text MonCurseur= MonTexte.createTextCursor MonCurseur.gotoEnd(false) ' aller en fin de document

MaTable = MonDocument.createInstance("com.sun.star.text.TextTable") MaTable.initialize(8,4) ' nombre de : lignes, colonnes MonTexte.insertTextContent(MonCurseur, MaTable, false) print "Nous allons modifier les largeurs de colonnes" lesSeparateurs = MaTable.TableColumnSeparators ' la table a 4 colonnes donc 3 séparateurs : 0, 1, 2

largeur = MaTable.TableColumnRelativeSum ' régler les positions en fraction de la largeur totale lesSeparateurs(0).Position = largeur * 0.1 ' colonne 1 reste inchangée lesSeparateurs(2).Position = largeur * 0.675 ' reporter les positions dans la table MaTable.setPropertyValue("TableColumnSeparators", lesSeparateurs) End Sub

Bernard