Bonjour Jean-Luc,
Le 05/12/2017 à 10:25, linux a écrit :
J'ai un champ dans Writer de Type Définir une Variable de Format Texte,
je souhaite modifier la valeur de celui-ci par macro Basic.
Merci de me donner une piste pour avancer dans ma macro.
tu es sûr que c'est une *variable* dont tu as besoin et non d'un *champ
d'utilisateur* ?
Comme son nom l'indique, une variable peut changer de valeur au long du
document. Ce n'est pas le cas d'un champ d'utilisateur.
Le changement de valeur d'une variable s'effectue en re-affichant la
variable à l'endroit du changement de valeur. Un champ d'utilisateur
peut être modifié à la volée mais sa nouvelle valeur est actualisée
partout.
-> Est-ce bien d'une variable dont tu as besoin ?
A titre d'information à propos des variables, voici un exemple qui
s'appuie sur deux variables, l'une texte ("MaVarTexte") et l'autre
numérique ("MaVarNum")
8< ---------------------------------------------------
Const FIELDROOT = "com.sun.star.text.FieldMaster."
Const VARIABLE = "SetExpression." 'pour les variables
Const USER = "User." 'pour les champs d'utilisateur
Sub InsererVariable()
Dim lo_Fields As Object
Dim lo_Field As Object
Dim lo_MasterField As Object
Dim lo_Text As Object
lo_Fields = ThisComponent.TextFieldMasters
'Var "MaVarNum"
'on modifie la valeur de la variable
lo_MasterField = lo_Fields.getByName(FIELDROOT & VARIABLE & "MaVarNum")
lo_Field =
ThisComponent.createInstance("com.sun.star.text.TextField.SetExpression")
lo_Field.Content = "987"
lo_Field.attachTextFieldMaster(lo_MasterField)
'on insère à la fin du document
lo_Text = ThisComponent.getText()
lo_Text.insertTextContent(lo_Text.getEnd(), lo_Field, False)
'Var "MaVarTexte"
'on modifie la valeur de la variable
lo_MasterField = lo_Fields.getByName(FIELDROOT & VARIABLE & "MaVarTexte")
lo_Field =
ThisComponent.createInstance("com.sun.star.text.TextField.SetExpression")
lo_Field.Content = "texte modifié"
lo_Field.attachTextFieldMaster(lo_MasterField)
'on insère à la fin du document
lo_Text = ThisComponent.getText()
lo_Text.insertTextContent(lo_Text.getEnd(), lo_Field, False)
End Sub
--------------------------------------------------- >8
1. Tu crées ces ceux variables dans un document
2. Tu ajoutes qq retours chariot
3. Tu exécutes la macro
Une bonne source d'infos ici :
http://www.pitonyak.org/oo.php
-> http://www.pitonyak.org/AndrewMacro.odt
et
-> http://www.pitonyak.org/OOME_3_0.pdf
juste au cas où tu n'aurais pas ceci :
https://www.eyrolles.com/Informatique/Livre/programmation-openoffice-org-et-libreoffice-9782212132472
Si vous répondez, merci de penser à utiliser la fonction "répondre à
tous" de votre logiciel de courrier électronique de façon que la liste
reçoive une copie de votre réponse.
Bien cordialement,
--
Jean-Francois Nifenecker, Bordeaux
--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à https://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être
supprimés
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.