Alignement à droite

Bonjour,

Quelles lignes de code dois-je ajouter à la macro ci-dessous pour avoir un alignement du texte à droite aux lignes 3 et 5 de mon tableau ,
Merci

option explicit

sub Paleo_G
rem - Créée par Pierre-Yves Samyn, le 23-08-2011
rem - Modifiée par Sandy-Pascal Andriant, le le 23-08-2011

dim PysCursor as object, PysTable as object, PysTableBorder as object
dim PysLine as new com.sun.star.table.BorderLine
dim PysNoLine as new com.sun.star.table.BorderLine
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(4) as new com.sun.star.beans.PropertyValue
args1(0).Name = "CharFontName.StyleName"
args1(0).Value = ""
args1(1).Name = "CharFontName.Pitch"
args1(1).Value = 2
args1(2).Name = "CharFontName.CharSet"
args1(2).Value = -1
args1(3).Name = "CharFontName.Family"
args1(3).Value = 5
args1(4).Name = "CharFontName.FamilyName"
args1(4).Value = "Arial"

dispatcher.executeDispatch(document, ".uno:CharFontName", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "FontHeight.Height"
args2(0).Value = 10
args2(1).Name = "FontHeight.Prop"
args2(1).Value = 100
args2(2).Name = "FontHeight.Diff"
args2(2).Value = 0

dispatcher.executeDispatch(document, ".uno:FontHeight", "", 0, args2())

PysCursor = thisComponent.currentController.viewCursor

if (isEmpty(PysCursor.textTable)) then
     msgbox "Le curseur n'est pas dans un tableau", 64, "Mise en forme du tableau"
else
     with PysLine
         .Color = 0
         .InnerLineWidth = 0
         .LineDistance = 0
         .OuterLineWidth = 9
     end with
     with PysNoLine
         .Color = 0
         .InnerLineWidth = 0
         .LineDistance = 0
         .OuterLineWidth = 0
     end with

     PysTable = PysCursor.TextTable
     PysTableBorder = PysTable.TableBorder
     PysTableBorder.IsLeftLineValid = true
     PysTableBorder.IsRightLineValid = true
     PysTableBorder.IsTopLineValid = true
     PysTableBorder.IsBottomLineValid = true
     PysTableBorder.IsHorizontalLineValid = true
     PysTableBorder.IsVerticalLineValid = true
     PysTableBorder.LeftLine = PysLine
     PysTableBorder.RightLine = PysLine
     PysTableBorder.TopLine = PysLine
     PysTableBorder.BottomLine = PysLine
     PysTableBorder.HorizontalLine = PysNoLine
     PysTableBorder.VerticalLine = PysNoLine
     PysTable.TableBorder = PysTableBorder
     PysTable.HoriOrient = com.sun.star.text.HoriOrientation.FULL
end if

end sub

Bonjour

conil26 wrote

Quelles lignes de code dois-je ajouter à la macro ci-dessous pour avoir
un alignement du texte à droite aux lignes 3 et 5 de mon tableau ,

Ajouter les lignes de déclaration (au début de la procédure) :

dim PysCell as object
dim PysNbCol as integer

Et remplacer les 3 dernières lignes:

PysTable.HoriOrient = com.sun.star.text.HoriOrientation.FULL
end if
end sub

Par :

        PysTable.HoriOrient = com.sun.star.text.HoriOrientation.FULL

  for PysNbCol = 0 to PysTable.columns.count - 1
    PysCell = PysTable.getCellByPosition(PysNbCol, 2)
    PysAlig(PysCell)
    PysCell = PysTable.getCellByPosition(PysNbCol, 4)
    PysAlig(PysCell)
  next PysNbCol
end if

end sub

sub PysAlig(PysCell as object)

dim PysEnum as object, PysPara as object

PysEnum = PysCell.createEnumeration

do while PysEnum.hasMoreElements
  PysPara = PysEnum.nextElement
  PysPara.ParaAdjust = com.sun.star.style.ParagraphAdjust.RIGHT
loop

end sub

Explications:
- On fait une "boucle" sur toutes les colonnes de la table (on suppose ici
qu'il n'y a pas de cellules fusionnées).
- On accède à chaque cellule des lignes 2 et 4 (la numérotation commençant
à zéro on traite les lignes 3 et 5)
- Pour chaque cellule on appelle la procédure PysAlig
- Cette procédure crée l'énumération de tous les paragraphes
contenus dans la cellule
- Pour chaque paragraphe on définit l'alignement

Cordialement
Pierre-Yves

Bonjour Pierre-Yves,

Merci de ces compléments.
Comme d'hab j'ai manqué de précisions ce qui a entraîné une procédure bien trop complexe.

En fait ma macro n'agit que sur un tableau à 1 seule colonne.
La boucle n'est peut-être pas nécessaire.

Suite...

conil26 wrote

Comme d'hab j'ai manqué de précisions ce qui a entraîné une procédure
bien trop complexe.

En fait ma macro n'agit que sur un tableau à 1 seule colonne.
La boucle n'est peut-être pas nécessaire.

Qui peut le plus peut le moins (disons... en l'occurrence...)

De même, j'ai préféré inclure la gestion des paragraphes de
chaque cellule bien que ce ne soit pas explicitement demandé
ni forcément nécessaire (si chaque cellule ne contient qu'un
paragraphe).

En général, c'est l'inverse qui se produit : on répond "simplement"
puis les détails arrivent :slight_smile:

Cordialement
Pierre-Yves

Encore merci. :wink: