[Résolu][Writer] Affichage de variable utilisateur

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Avatar de l’utilisateur
troumad
Membre OOrganisé
Membre OOrganisé
Messages : 88
Inscription : 15 août 2019 12:52
Localisation : Genas (F-69)

[Résolu][Writer] Affichage de variable utilisateur

Message par troumad »

Bonjour

Il me semblait avoir trouvé ici ce que je cherchais. Mais, je relève 2 problèmes je laisse les lignes correspondes affichées :
Pierre-Yves Samyn a écrit : 31 juil. 2008 14:11 [...]

Code : Tout sélectionner

[...]
If PysDoc.getTextFieldMasters.hasByName("com.sun.star.text.FieldMaster.User." & PysName)Then
	PysField =PysDoc.getTextFieldMasters.getByName("com.sun.star.text.FieldMaster.User." & PysName)
' Syntaxe pour un texte
'	PysField.Content ="PY " & time		
' Syntaxe pour un nombre
	PysField.Value = PysField.Value * 2
Else
	msgbox "Champ utilisateur pas trouvé"
End If
[...]
Le premier, c'est que dans mon cas, je ne trouve l'élément qu'avec

Code : Tout sélectionner

If PysDoc.getTextFieldMasters.hasByName("com.sun.star.text.fieldmaster.SetExpression" & PysName)Then
le second, c'est que le champ value n'existe pas. Je suis arrivé à trouvé le chemin grâce à XRay. Et ce dernier ne semble pas me donner l'accès à la valeur de ma variable.

Pour information, les noms des éléments sont (d'après Xray) :

Code : Tout sélectionner

          Tableau : T( 0 To 8 ) As string  
 
(0)       | string : "com.sun.star.text.fieldmaster.SetExpression.Illustration"
(1)       | string : "com.sun.star.text.fieldmaster.SetExpression.Table"
(2)       | string : "com.sun.star.text.fieldmaster.SetExpression.Text"
(3)       | string : "com.sun.star.text.fieldmaster.SetExpression.Drawing"
(4)       | string : "com.sun.star.text.fieldmaster.SetExpression.Figure"
(5)       | string : "com.sun.star.text.fieldmaster.SetExpression.affichage"
(6)       | string : "com.sun.star.text.fieldmaster.SetExpression.Exercice"
(7)       | string : "com.sun.star.text.fieldmaster.SetExpression.Exo"
(8)       | string : "com.sun.star.text.fieldmaster.SetExpression.Num"
et moi, c'est le champ affichage qui m'intéresse.
Dernière modification par troumad le 13 mai 2022 15:49, modifié 2 fois.
LibreOffice sous Mageia Linux Cauldron des dépôts de Mageia Cauldron (derrière version, voire version de test)
LibreOffice sous Mageia Linux Stable pour tests
Au travail : LibreOffice sous Windows (version qui peut varier d'un ordinateur à l'autre)
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
Messages : 4351
Inscription : 06 oct. 2008 08:03

Re: [Writer] Affichage de variable utilisateur

Message par Oukcha »

Bonjour,

Nous nous devons de verrouiller le fil de discussion où vous aviez posté ce message.
Nous vous rappelons les règles de ce forum et notamment la n° 7
Un sujet = le problème d'une seule personne

Sujet initial : viewtopic.php?t=11314

Comme vous avez pu le lire, ce sujet est désormais marqué [Résolu].
Si vous avez également un problème concernant ce sujet, c'est que ce dernier est différent, votre configuration ou la version du programme ne sont pas les mêmes que celle de l'auteur de ce fil à la date de création du fil.

Dans ce cas et pour des raisons de lisibilité sur ce forum, nous avons déplacé votre message en rappelant le lien du fil origine.
Vous pouvez éditer votre message pour modifier éventuellement son titre pour qu'il soit en adéquation avec votre sujet.

Merci de votre collaboration.
                                        
Pour tout savoir sur le fonctionnement de ce forum :arrow: À lire avant tout ! Image
Avatar de l’utilisateur
troumad
Membre OOrganisé
Membre OOrganisé
Messages : 88
Inscription : 15 août 2019 12:52
Localisation : Genas (F-69)

Re: [Writer] Affichage de variable utilisateur

Message par troumad »

Pour information, on m'a donné ailleurs une réponse. J'attends la permission l'auteur de l'aide pour donner la réponse ici.
LibreOffice sous Mageia Linux Cauldron des dépôts de Mageia Cauldron (derrière version, voire version de test)
LibreOffice sous Mageia Linux Stable pour tests
Au travail : LibreOffice sous Windows (version qui peut varier d'un ordinateur à l'autre)
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26209
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Writer] Affichage de variable utilisateur

Message par Dude »

Salut,
troumad a écrit : 13 mai 2022 11:42 Pour information, on m'a donné ailleurs une réponse.
C'est assez gavant ce genre de réponse car ça laisse ceux qui te lisent dans une impasse.
Quand on poste la même question sur d'autres forums, il est d'usage de le mentionner en fournissant un lien tout simplement.
Oukcha a écrit : 13 mai 2022 11:32Sujet initial : viewtopic.php?t=11314
Le document fourni dans le fil cité fonctionne sans problème sous OpenOffice.
Si tu as un dysfonctionnement avec un dérivé, il faut en plus du code :
  1. joindre un document explicatif intégrant cette macro avec les données de départ (page 1) et le résultat à obtenir (page 2)
  2. fournir un mode pas-à-pas permettant de reproduire ce qui a été fait ou à faire pour arriver au problème
  3. ajouter des copies écran (situation avant / après) si cela permet de mieux comprendre
Merci de publier ces informations à la suite.
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Avatar de l’utilisateur
troumad
Membre OOrganisé
Membre OOrganisé
Messages : 88
Inscription : 15 août 2019 12:52
Localisation : Genas (F-69)

Re: [Writer] Affichage de variable utilisateur

Message par troumad »

Comme convenu, voici le code qui me permet de trouver ma variable affichage et de la modifier :

Code : Tout sélectionner

Sub choix

    dim i as integer
    dim PysField as object
    dim nomType as string
    dim newType as string
    dim elements(20)
    dim document   as object
    dim dispatcher as object

    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    elements = ThisComponent.TextFieldMasters.getElementNames()

    rem Chercher la variable "affichage"
    for i=0 to ubound(elements)
        if (instr(elements(i),"affichage")>0) then
        	rem je récupère dans la variable "valeur" la valeur de ma variable recherchée
        	rem avec cette méthode, je ne peux pas avoir une autre variable dont le nom contient affichage, sinon, il faut faire un autre test.
                valeur= ThisComponent.TextFieldMasters.getByName(elements(i)).DependentTextFields(0).content
                
                rem je mets une autre valeur
		ThisComponent.TextFieldMasters.getByName(elements(i)).DependentTextFields(0).content = "autre_chose"
		REM mettre à jour l'affichage de la variable
                dispatcher.executeDispatch(document, ".uno:UpdateFields", "", 0, Array())

		REM pas joli dans un for, mais ça permet de sortir dès qu'on a trouvé ce qu'on cherche
                i=ubound(elements)
        endif
    next i

End Sub
Ce document utilise cette fonction pour échanger la valeur de la variable :
test.odt
Cliquez sur bouton et la macro s'exécute.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice sous Mageia Linux Cauldron des dépôts de Mageia Cauldron (derrière version, voire version de test)
LibreOffice sous Mageia Linux Stable pour tests
Au travail : LibreOffice sous Windows (version qui peut varier d'un ordinateur à l'autre)