modifier un champ par macro dans Writer

classic Classic list List threaded Threaded
7 messages Options
linux-2 linux-2
Reply | Threaded
Open this post in threaded view
|

modifier un champ par macro dans Writer

Bonjour à tous,

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.

Merci à tous pour votre aide

Jean Luc

Configuration:

Windows 10

LibreOffice 5.2 .7 .2.


--
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
yves dutrieux yves dutrieux
Reply | Threaded
Open this post in threaded view
|

Re: modifier un champ par macro dans Writer

Bonjour,


modifie ta variable en ayant activé ton enregistreur de macro, tu trouveras
peut-être ce que tu cherches ;)

Yves

Le 5 décembre 2017 à 10:25, linux <[hidden email]> a écrit :

> Bonjour à tous,
>
> 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.
>
> Merci à tous pour votre aide
>
> Jean Luc
>
> Configuration:
>
> Windows 10
>
> LibreOffice 5.2 .7 .2.
>
>
> --
> Envoyez un mail à [hidden email] pour vous
> désinscrire
> Les archives de la liste sont disponibles à https://listarchives.libreoffi
> ce.org/fr/users/
> Tous les messages envoyés sur cette liste seront archivés publiquement et
> ne pourront pas être supprimés
>



--
web site : http://www.molenbaix.com

--
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
linux-2 linux-2
Reply | Threaded
Open this post in threaded view
|

Re: modifier un champ par macro dans Writer

Bonsoir Yves,

L'enregistreur de macro n'enregistre pas la modification faite sur un
champ, dommage!!

A bientôt et merci


Le 05/12/2017 à 17:46, yves dutrieux a écrit :

> Bonjour,
>
>
> modifie ta variable en ayant activé ton enregistreur de macro, tu
> trouveras peut-être ce que tu cherches ;)
>
> Yves
>
> Le 5 décembre 2017 à 10:25, linux <[hidden email]
> <mailto:[hidden email]>> a écrit :
>
>     Bonjour à tous,
>
>     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.
>
>     Merci à tous pour votre aide
>
>     Jean Luc
>
>     Configuration:
>
>     Windows 10
>
>     LibreOffice 5.2 .7 .2.
>
>
>     --
>     Envoyez un mail à [hidden email]
>     <mailto:users%[hidden email]> pour vous désinscrire
>     Les archives de la liste sont disponibles à
>     https://listarchives.libreoffice.org/fr/users/
>     <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
>
>
>
>
> --
> web site : http://www.molenbaix.com


--
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
yves dutrieux yves dutrieux
Reply | Threaded
Open this post in threaded view
|

Re: modifier un champ par macro dans Writer

Bonsoir,

Bizarre, sous windows, j'obitens ceci avec la version  5.4.4

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args5(5) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Type"
args5(0).Value = 8
args5(1).Name = "SubType"
args5(1).Value = 1
args5(2).Name = "Name"
args5(2).Value = "mavartext"
args5(3).Name = "Content"
args5(3).Value = "montexte"
args5(4).Name = "Format"
args5(4).Value = -1
args5(5).Name = "Separator"
args5(5).Value = " "

dispatcher.executeDispatch(document, ".uno:InsertField", "", 0, args5())


end sub

ma variable s'appelle "mavartext" et sa valeur est "montexte". le format -1
signifie visiblement le forma texte.


Yves

Le 5 décembre 2017 à 18:05, linux <[hidden email]> a écrit :

> Bonsoir Yves,
>
> L'enregistreur de macro n'enregistre pas la modification faite sur un
> champ, dommage!!
>
> A bientôt et merci
>
> Le 05/12/2017 à 17:46, yves dutrieux a écrit :
>
> Bonjour,
>
>
> modifie ta variable en ayant activé ton enregistreur de macro, tu
> trouveras peut-être ce que tu cherches ;)
>
> Yves
>
> Le 5 décembre 2017 à 10:25, linux <[hidden email]> a écrit :
>
>> Bonjour à tous,
>>
>> 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.
>>
>> Merci à tous pour votre aide
>>
>> Jean Luc
>>
>> Configuration:
>>
>> Windows 10
>>
>> LibreOffice 5.2 .7 .2.
>>
>>
>> --
>> 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
>>
>
>
>
> --
> web site : http://www.molenbaix.com
>
>
>


--
web site : http://www.molenbaix.com

--
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
linux-2 linux-2
Reply | Threaded
Open this post in threaded view
|

Re: modifier un champ par macro dans Writer

Bonsoir Yves,

Cet enregistrement, c'est lors de la création du champ, mais je
souhaites modifier un champ déjà existant dans un document writer.

je vais essayer de bricoler avec dispatcher.executeDispatch(document,
".uno:FieldDialog", "", 0, Array())

je vous fais un retour après mes essais

Jean Luc


Le 05/12/2017 à 19:40, yves dutrieux a écrit :

> Bonsoir,
>
> Bizarre, sous windows, j'obitens ceci avec la version  5.4.4
>
> sub Main
> rem ----------------------------------------------------------------------
> rem define variables
> dim document   as object
> dim dispatcher as object
> rem ----------------------------------------------------------------------
> rem get access to the document
> document   = ThisComponent.CurrentController.Frame
> dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
>
> rem ----------------------------------------------------------------------
> dim args5(5) as new com.sun.star.beans.PropertyValue
> args5(0).Name = "Type"
> args5(0).Value = 8
> args5(1).Name = "SubType"
> args5(1).Value = 1
> args5(2).Name = "Name"
> args5(2).Value = "mavartext"
> args5(3).Name = "Content"
> args5(3).Value = "montexte"
> args5(4).Name = "Format"
> args5(4).Value = -1
> args5(5).Name = "Separator"
> args5(5).Value = " "
>
> dispatcher.executeDispatch(document, ".uno:InsertField", "", 0, args5())
>
>
> end sub
>
> ma variable s'appelle "mavartext" et sa valeur est "montexte". le format -1
> signifie visiblement le forma texte.
>
>
> Yves
>
> Le 5 décembre 2017 à 18:05, linux <[hidden email]> a écrit :
>
>> Bonsoir Yves,
>>
>> L'enregistreur de macro n'enregistre pas la modification faite sur un
>> champ, dommage!!
>>
>> A bientôt et merci
>>
>> Le 05/12/2017 à 17:46, yves dutrieux a écrit :
>>
>> Bonjour,
>>
>>
>> modifie ta variable en ayant activé ton enregistreur de macro, tu
>> trouveras peut-être ce que tu cherches ;)
>>
>> Yves
>>
>> Le 5 décembre 2017 à 10:25, linux <[hidden email]> a écrit :
>>
>>> Bonjour à tous,
>>>
>>> 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.
>>>
>>> Merci à tous pour votre aide
>>>
>>> Jean Luc
>>>
>>> Configuration:
>>>
>>> Windows 10
>>>
>>> LibreOffice 5.2 .7 .2.
>>>
>>>
>>> --
>>> 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
>>>
>>
>>
>> --
>> web site : http://www.molenbaix.com
>>
>>
>>
>


--
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
Jean-Francois Nifenecker Jean-Francois Nifenecker
Reply | Threaded
Open this post in threaded view
|

Re: modifier un champ par macro dans Writer

In reply to this post by linux-2
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 à [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
linux-2 linux-2
Reply | Threaded
Open this post in threaded view
|

Re: modifier un champ par macro dans Writer

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 à [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