Date: prev next · Thread: first prev next last
2017 Archives by date, by thread · List index


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.