Writer Macro formatage de tableau

Bonsoir,

Quel est le code qui permet d'obtenir dans une macro Writer :
Propriété du tableau / Largeur : 100%

Writer :
Propriété du tableau / Largeur : 100%

Bonjour,
Tu vas avoir des réponses détaillées ici :
http://user.services.openoffice.org/fr/forum/search.php?st=0&sk=t&sd=d&sr=posts&keywords=writer+largeur+tableau&fid[]=8
J.M

Merci,

Je vais parcourir toutes ces infos en espérant y trouver une solution.

Cordialement,
Sandy-Pascal Andriant

Bonjour,

Comment dois-je intégrer

[QUOT]dispatcher.executeDispatch(document, ".uno:SetOptimalColumnWidth", "", 0, Array())[/QUOT]
dans une macro pour obtenir 1 tableau à 1 seule colonne, largeur : 100% ?

http://www.oooforum.org/forum/viewtopic.phtml?t=102575

Cordialement,
Sandy-Pascal Andriant

Ce code fonctionne :

REM ***** Insère Tableau avec 1 ligne et 1 colonne *****

sub Tableau_1_ligne_1_colonne
rem ----------------------------------------------------------------------
rem define variables
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(3) as new com.sun.star.beans.PropertyValue
args1(0).Name = "TableName"
args1(0).Value = "Tableau1"
args1(1).Name = "Columns"
args1(1).Value = 1
args1(2).Name = "Rows"
args1(2).Value = 1
args1(3).Name = "Flags"
args1(3).Value = 9

dispatcher.executeDispatch(document, ".uno:InsertTable", "", 0, args1())
end sub

mais il y a d'autres manières sans Macro :
http://wiki.documentfoundation.org/FR/FAQ/Writer/136
J.M

Merci pour ce code qui fonctionne parfaitement.
Mais comme j'ai mal posé ma question je n'ai pas obtenu la réponse adéquate.

Je dois traiter quotidiennement plusieurs transferts de tableaux (1 col et 12 à 50 li) issus d'excel dans 1 doc Writer.
Pour pouvoir conserver la mise en forme je fais Ctrl+Maj+V (Texte formaté [RTF])

Or ce copier-coller me donne des tableaux d'un format de 72 %

Je passe ce tableau dans une macro qui modifie la police et le quadrillage.
Mais je n'arrive pas à ajouter la propriété : largeur 100%

Voici le code très sale par "enregistrer une macro" :

sub tableau_100
rem ----------------------------------------------------------------------
rem define variables
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())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:BorderInner", "", 0, Array())

rem ----------------------------------------------------------------------
dim args4(7) as new com.sun.star.beans.PropertyValue
args4(0).Name = "BorderOuter.LeftBorder"
args4(0).Value = Array(0,0,9,0,0,9)
args4(1).Name = "BorderOuter.LeftDistance"
args4(1).Value = 49
args4(2).Name = "BorderOuter.RightBorder"
args4(2).Value = Array(0,0,9,0,0,9)
args4(3).Name = "BorderOuter.RightDistance"
args4(3).Value = 49
args4(4).Name = "BorderOuter.TopBorder"
args4(4).Value = Array(0,0,9,0,0,9)
args4(5).Name = "BorderOuter.TopDistance"
args4(5).Value = 0
args4(6).Name = "BorderOuter.BottomBorder"
args4(6).Value = Array(0,0,9,0,0,9)
args4(7).Name = "BorderOuter.BottomDistance"
args4(7).Value = 0

dispatcher.executeDispatch(document, ".uno:BorderOuter", "", 0, args4())

rem ----------------------------------------------------------------------
dim args5(3) as new com.sun.star.beans.PropertyValue
args5(0).Name = "BorderShadow.Location"
args5(0).Value = com.sun.star.table.ShadowLocation.NONE
args5(1).Name = "BorderShadow.Width"
args5(1).Value = 180
args5(2).Name = "BorderShadow.IsTransparent"
args5(2).Value = false
args5(3).Name = "BorderShadow.Color"
args5(3).Value = 8421504

dispatcher.executeDispatch(document, ".uno:BorderShadow", "", 0, args5())

end sub

Cordialement,
Sandy-Pascal Andriant

Bonjour

Sandy Andriant wrote:

Quel est le code qui permet d'obtenir dans une macro Writer : Propriété du
tableau / Largeur : 100%

Quelque chose comme ceci :

thiscomponent.TextTables.getByName("Tableau1").HoriOrient =
com.sun.star.text.HoriOrientation.FULL

Cordialement
Pierre-Yves

Un grand merci.
ça marche parfaitement. :slight_smile:

Cordialement,
Sandy-Pascal Andriant

Après de multiples essais, j'ai toujours le même conflit :

Cette propriété de table semble contradictoire avec la bordure extérieure.

Tant que je n'ajoute pas la nvl propriété, je peux obtenir la bordure extérieure mais aussitôt que j'ajoute "HoriOrientation.FULL" la bordure ne s'affiche plus alors que je peux quand même l'obtenir manuellement :-[

Cordialement,
Sandy-Pascal Andriant

Bonjour

andriant.sandy wrote:

Cette propriété de table semble contradictoire avec la bordure extérieure.

Je ne reproduis pas cela...

L'exemple joint parcourt la collection des tableaux du document.
Pour chaque tableau :
- utilisation d'un trait rouge pour chaque type de trait (haut, bas,
gauche...)
- alignement "full"

http://nabble.documentfoundation.org/file/n3274318/TableauLargeurMax.odt
TableauLargeurMax.odt

Cordialement
Pierre-Yves

BOnsoir Pierre-Yves,

Merci pour cette nouvelle macro.
Employée telle que, elle crée autant de pages que de ligne dans le tableau et produit des lignes en chevrons.

Cordialement,
Sandy-Pascal Andriant

BOnsoir Pierre-Yves,

Merci pour cette nouvelle macro.
Employée telle que, elle crée autant de pages que de ligne dans le tableau et produit des lignes en chevrons. :-[

Cordialement,
Sandy-Pascal Andriant

Bonjour

andriant.sandy wrote:

Employée telle que, elle crée autant de pages que de ligne dans le tableau
et produit des lignes en chevrons.

Tu n'es guère précis... cela n'aide pas à comprendre le problème...

1. Quel est ton environnement : système (nom & version) et Libo (version
précise) ?

2. "Employée telle que" veut-il dire "j'ouvre le document
TableauLargeurMax.odt joint précédemment, j'exécute la macro
PysTableRedFull" ou cela veut-il dire que tu as copié la macro pour
l'exécuter sur ton document ?

3. Si la macro fonctionne dans le document joint mais pas pour tes tableaux,
ne pourrais-tu pas joindre un document exemple (éventuellement
dépersonnalisé s'il contient des données confidentielles) ?

Pour info. j'ai testé cette macro avec une version 3.3.3 et la pré-version
3.4.3rc1

Cordialement
Pierre-Yves

Bonjour,

J'avais mis un exemple en PJ qui ne passe pas apparemment.
Je mettrai des précisions dans la journée.
Loo 3.4. / Win 7

Cordialement,
Sandy-Pascal Andriant

andriant.sandy wrote:

J'avais mis un exemple en PJ qui ne passe pas apparemment.

Ceci est possible via nabble cf. http://fr.libreoffice.org/forums/

Cordialement
Pierre-Yves

Re,

Merci de m'avoir indiqué comment joindre une PJ.

Je récapitule :

J'ai placé un tableau excel (1 col x 15 li) dans une page Writer contenant
la macro TableauLargeurMax.odt
J'ajoute le fichier TableauLargeurMaxResult.odt qui contient le résultat
après passage du tableau par la macro;

Voici le tableau excel utilisé :

Re...

conil26 wrote:

J'ajoute le fichier TableauLargeurMaxResult.odt qui contient le résultat
après passage du tableau par la macro

Je demandais plutôt un document comprenant un tableau avant exécution de la
macro, afin de déterminer si le problème vient d'un type de tableau
particulier...

Tu n'as d'ailleurs pas répondu à ma question : la macro jointe
fonctionne-t-elle correctement pour les deux tableaux contenus dans mon
document ?

Je m'interroge également sur

conil26 wrote:

"Employée telle que, elle crée autant de pages que de ligne dans le
tableau et produit des lignes en chevrons."

Car ton document n'affiche pas pour moi ce résultat. Certes les bordures
sont à revoir mais la structure du tableau est correcte, cf. copie d'écran
:
http://nabble.documentfoundation.org/file/n3278173/Capture-1.png

Cela dit, si j'exécute la macro sur ton document TableauLargeurMaxResult.odt
j'obtiens un résultat conforme cf. nouveau document joint :

http://nabble.documentfoundation.org/file/n3278173/TableauLargeurMaxResultPys.odt
TableauLargeurMaxResultPys.odt

Si la macro ne fonctionne pas correctement dans son document d'origine
(bordure épaisses & rouge sur les deux tableaux) tu as peut-être un problème
de configuration (profil corrompu par exemple).

D'autre part tu indiques utiliser une version 3.4. Il s'agit donc d'une
"pré-version". Tu pourrais essayer d'installer la 3.4.3rc1 pour tester
(rappel : cela fonctionne sur mon poste XP avec cette version).

Cordialement
Pierre-Yves

Re,

J'ai rechargé ton fichier initial et refait l'expérience.
Ta macro crée 9 pages de zébrures sur l'un comme sur l'autre des 2 tableaux.
J'en conclue qu'il faut que je change de version de Loo selon tes conseils.

Je telecharge et fais d'autres essais.

Voilà,

Avec Loo 3.3.4 et Win 7, ta macro fonctionne correctement mais elle traite
tous les tableaux présents sur la page au lieu de ne traiter que celui dans
lequel on place le curseur.

Reste un réglage :

comment effacer le quadrillage interne pour ne conserver que l'encadré.

Lorsque j'utilise l'enregistreur automatique, il répond :

rem ----------------------------------------------------------------------
dim args4(12) as new com.sun.star.beans.PropertyValue
args4(0).Name = "OuterBorder.LeftBorder"
args4(0).Value = Array(0,0,2,0,0,2)
args4(1).Name = "OuterBorder.LeftDistance"
args4(1).Value = 97
args4(2).Name = "OuterBorder.RightBorder"
args4(2).Value = Array(0,0,2,0,0,2)
args4(3).Name = "OuterBorder.RightDistance"
args4(3).Value = 97
args4(4).Name = "OuterBorder.TopBorder"
args4(4).Value = Array(0,0,2,0,0,2)
args4(5).Name = "OuterBorder.TopDistance"
args4(5).Value = 97
args4(6).Name = "OuterBorder.BottomBorder"
args4(6).Value = Array(0,0,2,0,0,2)
args4(7).Name = "OuterBorder.BottomDistance"
args4(7).Value = 97
args4(8).Name = "InnerBorder.Horizontal"
args4(8).Value = Array(0,0,0,0,0,0)
args4(9).Name = "InnerBorder.Vertical"
args4(9).Value = Array(0,0,0,0,0,0)
args4(10).Name = "InnerBorder.Flags"
args4(10).Value = 0
args4(11).Name = "InnerBorder.ValidFlags"
args4(11).Value = 127
args4(12).Name = "InnerBorder.DefaultDistance"
args4(12).Value = 0

dispatcher.executeDispatch(document, ".uno:SetBorderStyle", "", 0, args4())

Pour mieux comprendre mon propos, je charge 2 fichiers :
* TableauxExcelInitial.odt contenant 2 tableaux issus d'excel déposés par
Ctrl+Maj+V, automatiqueement nommés Tableau1 et Tableau2 et contenant les
macros Tableau1 et Tableau2 qui montrent le résultat souhaité sauf le cadre
du tableau1 contrarié par :
"thiscomponent.TextTables.getByName("Tableau1").HoriOrient =
com.sun.star.text.HoriOrientation.FULL"

* TableauxExcelResult.odt contenant les 2 tableaux comme je les souhaite.

http://nabble.documentfoundation.org/file/n3278355/TableauxExcelInitial.odt
TableauxExcelInitial.odt
http://nabble.documentfoundation.org/file/n3278355/TableauxExcelResult.odt
TableauxExcelResult.odt