Macro pour compléter une zone de texte

Dans LibreOffice-Writer, je voudrais écrire du texte dans un contrôle Zone De Texte en utilisant des composants Bouton.
Je ne trouve que des exemples pour Calc, qui font appel à un objet “Form” qui n’existe pas chez moi, ou à des fonctions getByName que je ne sais pas à quoi raccrocher.

Bonjour @MyosotisArae

Il y a bel et bien un objet Form : les contrôles sont toujours rattachés à un formulaire. Lors du dessin d’un contrôle LibreOffice l’attribue à l’objet Form courant et s’il n’y en a pas encore, cet objet est créé de manière transparente avec le nom par défaut Standard.

Dans l’exemple joint MajZoneTexte.odt tu trouveras le code :

Sub PysModifTexte

dim oForm as object, oCtrl as object

oForm =  thiscomponent.DrawPage.Forms.getByName("Standard")
oForm.getByName("Zone de texte 1").text="mon texte"

End Sub

Je commence par créer une variable qui “pointe” sur l’objet Form. On voit qu’il a été créé dans la “page de dessin”. On part donc du document (thiscomponent) qui comprend une page de dessin (DrawPage) dans laquelle on trouve la collection des formulaires (Forms), dans cette collection on veut accéder au formulaire nommé Standard.

À partir de cet objet on va rechercher le contrôle nommé “Zone de texte 1” (nom à adapter éventuellement si tu as créé plusieurs contrôles ou si tu l’as renommé) et on modifie sa propriété Text (comme son nom l’indique).

[Ajout 02-05-20 09:15]

@MyosotisArae

Je l’avais indiqué : le code ci-dessus s’appuie sur les noms par défaut. J’ai indiqué qu’il fallait renommer ce qui devait l’être en fonction des noms figurant dans ton document… noms que tu es seul à pouvoir connaître.

Je te conseille d’afficher la barre d’outils Ébauche de formulaire puis dans celle-ci, de cliquer pour afficher le navigateur de formulaire. Ce dernier te donnera les noms de tous tes formulaires & contrôles :

Cordialement

Voilà le message que j’ai quand j’arrive sur la ligne qui calcule oForm: Erreur d’exécution BASIC. Une exception s’est produite : Type: com.sun.star.container.NoSuchElementException Message: .

@MyosotisArae

Bonjour ? Merci ? Autre précision utile du genre : message d’erreur rencontré en chargeant l’exemple joint puis en cliquant sur le bouton MajTexte ?

Bonjour.
Je parlais du code que vous m’aviez proposé. Pardon, ça me semblait évident.
J’avais trouvé ce genre d’exemple, mais avec “Form” à la place de “Standard”. Donc j’ai testé le vôtre. Mais j’ai le même message.
Merci.

J’ai trouvé, ça y est : il ne fallait écrire ni “Form”, ni “Standard” mais “Formulaire”.
Merci encore de m’avoir aidée !