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.odtet
->
http://www.pitonyak.org/OOME_3_0.pdfjuste au cas où tu n'aurais pas ceci :
https://www.eyrolles.com/Informatique/Livre/programmation-openoffice-org-et-libreoffice-9782212132472Si 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 à
[hidden email] 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