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 à [email protected] 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