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