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


Jean-François,

Après de nombreuse tentatives!!!!

les instructions fonctionne pour les "champs Utilisateurs" mais pas pour "Définir une variable"

ci-joint un bout de macro qui fonctionne

NomClient et ObjectifAnnee1 sont les noms des "champs utilisateurs" que j'utilise


        oLesChampsUtilisateurCDLO = oDocumentOffreCDLO.TextFieldMasters
        oLeChampUtilisateurSelectionerCDLO = oLesChampsUtilisateurCDLO.getByName("com.sun.star.text.FieldMaster.User.NomClient")
        oLeChampUtilisateurSelectionerCDLO.Content = "nom du client"
        oLeChampUtilisateurSelectionerCDLO = oLesChampsUtilisateurCDLO.getByName("com.sun.star.text.FieldMaster.User.ObjectifAnnee1")
        oLeChampUtilisateurSelectionerCDLO.Value = 102

        oDocumentOffreCDLO.TextFields.refresh()

c'est instruction sont abordés dans la nouvelle version de la bible de Marcelly et Godard,  mais pas dans ma veille version 2.0
Merci pour ton aide
A bientôt
Jean Luc

Le 05/12/2017 à 22:40, Jean-Francois Nifenecker a écrit :
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,


--
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.