[Résolu][Calc] Bordures intérieures ne paraissent pas

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
AUBRY
Fraîchement OOthentifié
Messages : 3
Inscription : 23 févr. 2018 08:37

[Résolu][Calc] Bordures intérieures ne paraissent pas

Message par AUBRY »


La modération vous a écrit: Pour la bonne tenue de ce forum, veillez à respecter la syntaxe des balises (première lettre en majuscule puis le reste en minuscules, le tout entre crochets).
Le terme Macro est inutile dans la section macros

Bonjour,
J'enregistre une macro pour faire des bordures intérieures et extérieures dans un tableau.
L'enregistrement se passe bien et le résultat est celui que je souhaite.

Lorsque je relance la macro, les bordures extérieures apparaissent et les bordures intérieures ne sont pas là.
Je fais des recherches depuis plusieurs heures et je n'ai pas trouvé de solutions.

Code : Tout sélectionner

sub test
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(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$B$15"

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

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$B$15:$E$19"

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

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

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

rem ----------------------------------------------------------------------
dim args4(4) as new com.sun.star.beans.PropertyValue
args4(0).Name = "BorderInner.Horizontal"
args4(0).Value = Array(0,0,62,0,0,62)
args4(1).Name = "BorderInner.Vertical"
args4(1).Value = Array(0,0,62,0,0,62)
args4(2).Name = "BorderInner.Flags"
args4(2).Value = 3
args4(3).Name = "BorderInner.ValidFlags"
args4(3).Value = 127
args4(4).Name = "BorderInner.DefaultDistance"
args4(4).Value = 0

dispatcher.executeDispatch(document, ".uno:BorderInner", "", 0, args4())
end sub
Que signifie les 6 paramètres dans Array, le 3é et le 6è sont les épaisseurs du trait mais les autres ?
et la value de "BorderInner.Flags" et de "BorderInner.ValidFlags" ?

D'avance merci de votre réponse.
Dernière modification par micmac le 28 févr. 2018 08:48, modifié 3 fois.
Raison : [Calc] remplace (calc) + Balisage
LibreOffice 6.0.0.3 sous Windows 10 home
Avatar de l’utilisateur
Noonours
PassiOOnné
PassiOOnné
Messages : 501
Inscription : 11 mai 2013 00:11
Localisation : Aix en Provence

Re: [Calc] Bordures intérieures ne paraissent pas

Message par Noonours »

Bonjour
Tu peux regrouper les propriétés des bordures intérieures et extérieures avec l'objet UNO "SetBorderStyle"
Ca donnerait: (toujours avec l'enregistreur de macros)

Code : Tout sélectionner

sub test
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(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$B$15:$E$19"

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

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

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

end sub
Noonours procrastinateur perfectionniste: "Je fais rien, mais demain je l'ferai mieux"

Pour obtenir la réponse la plus précise possible, VEUILLEZ JOINDRE UN FICHIER

LibO 7.6.5.2 Stable et OpenOffice 4.1.15 sous Windows 10
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Calc] Bordures intérieures ne paraissent pas

Message par Hubert Lambert »

Bonjour,
AUBRY a écrit :Que signifie les 6 paramètres dans Array, le 3é et le 6è sont les épaisseurs du trait mais les autres ?
Ces paramètres correspondent aux attributs d'un objet "BorderLine" (voir https://api.libreoffice.org/docs/idl/re ... rLine.html et https://api.libreoffice.org/docs/idl/re ... Line2.html).
Dans l'ordre :
- la couleur;
- l'épaisseur de la ligne intérieure en cas de ligne double, en 100es de mm;
- l'épaisseur de la ligne simple ou de la ligne extérieure en cas de ligne double, en 100es de mm;
- l'interdistance en cas de ligne double, en 100es de mm;
- le style de ligne (voir https://api.libreoffice.org/docs/idl/re ... Style.html);
- l'épaisseur de la ligne (unité non précisée) : cette valeur prévaut sur les précédentes si elle est fournie et le calcul se fait automatiquement sur base du style de ligne.

Les deux derniers attributs sont spécifiques à LibreOffice.

Cordialement.
Dernière modification par Hubert Lambert le 28 févr. 2018 08:33, modifié 1 fois.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
AUBRY
Fraîchement OOthentifié
Messages : 3
Inscription : 23 févr. 2018 08:37

Re: [Calc] Bordures intérieures ne paraissent pas

Message par AUBRY »

Bonjour Nounours,

Je te remercie pour ta réponse qui est la solution que je souhaitais.

Je viens de comparer les 2 macro. J'ai noté que le nom des bordures est inversé "OuterBorder" et "BorderOuter",
le regroupement des bordures intérieures et extérieures et l'instruction ".uno:SetBorderStyle" que je n'ai pas
trouvé dans mes recherches sur les différents forums.

Encore merci pour ta solution.


Pour micmac, j'ai bien noté tes remarques.
LibreOffice 6.0.0.3 sous Windows 10 home
AUBRY
Fraîchement OOthentifié
Messages : 3
Inscription : 23 févr. 2018 08:37

[Résolu] [Calc] Bordures intérieures ne paraissent pas

Message par AUBRY »

Bonjour Hubert Lambert,

Je te remercie pour les compléments d'information que tu as donnés avec les 3 liens, lesquels je n'avais jamais vu dans mes recherches.

Encore merci.

Je clôture le sujet.
Dernière modification par AUBRY le 28 févr. 2018 08:46, modifié 2 fois.
LibreOffice 6.0.0.3 sous Windows 10 home
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9252
Inscription : 28 août 2010 08:45

Re: [Calc] Bordures intérieures ne paraissent pas

Message par micmac »

Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac