Créer autotext à partir d'un tableau

Bonjour,

J’ai plus qu’une demande, mais imaginez vous faire 600 lignes à rentrer en autotext ??? Et bien c’est mon problème, et avant que je ne sorte la rame pour me frapper, je viens vous demander conseils.

J’ai donc créer un tableau à deux colonnes en .odt :

  • une pour les raccourcis
  • l’autre pour le texte à insérer
  • et 600 lignes environ de données, les raccourcis permettant d’éditer de longs textes…

Comment l’importer directement dans la section autotext en .bau ?

Je suis un novice en informatique et vous remercie par avance de ce que vous pourrez me répondre.

Cordialement,

manoub1

Bonjour @manoub1, @mgl

Tout ceci est possible par macro. Le programme de l’exemple joint :

  • vérifie si une catégorie d’AutoTextes nommée “manoub” existe déjà
  • si oui, elle est supprimée
  • création de la catégorie “manoub” dans le dossier User (voir documentation API)
  • recherche dans le document un tableau nommé “manoub” (nom figurant en constante en début de programme)
  • si le tableau est trouvé, parcours de ce dernier pour créer les entrées dans la catégorie (j’utilise le texte comme nom d’autoTexte puisque le tableau n’a que 2 colonnes : on a le raccourci et le contenu mais pas de colonne pour le nom).

CréerAutoTextes.odt

Cordialement

Bonjour @PYS, @manoub1

Un qui sait vaut mieux que dix qui cherchent !

Avec cette macro, quelques dizaines d’heures seront économisées par rapport à ma méthode !

Belle journée, Michel

@mgl désolé, j’ai vu que tu avais dû y passer du temps mais je n’étais pas dispo. pour écrire du code plus rapidement. Merci pour ton implication sur ce site…

Cordialement

Pas de pb,

J’ai au moins partagé une méthode de constitution de fichier que j’ai souvent utilisé pour composer des requêtes SQL d’importation de données, pour des grosses tables. La méthode était facile pour les 2 fichiers manifest.xml et BlockList.xml mais très pénible pour les 600 autres fichiers! Cela m’a permis de découvrir les autotextes en détail.

Bonjour @manoub1,

Edition du 16/10/2020 : Voir en bas de réponse.

Merci de préciser les versions de LO et du système d’exploitation.

Avez-vous vu la partie de l’aide sur les Autotext, plus particulièrement la section Import ?

Editez le corps de votre question pour ajouter des informations… N’utiliser une réponse que pour apporter une réelle réponse à votre problème.

Ajout

Les Autotextes sont conservés, par défaut, à l’installation, dans deux répertoires :

répertoire d'installation de LO/share/autotext/

répertoire du profile LO de l'utilisateur/autotext/ Par exemple, dans un environnement Ubuntu 18.04 et pour LO 6.4.6, ce dernier répertoire est $/.config/libreoffice/4/user/autotext/

Ces répertoires comportent des fichiers .bau qui correspondent aux différentes catégories d’autotextes.

Ces fichiers .bau sont des archives qui s’ouvrent par un outil de décompression et comportent chacun une liste de répertoire dont chacun correspond à un autotexte, un fichier BlockList.xml qui liste les différents autotextes avec leur répertoire associé, leur texte de présentation, le raccourci associé et éventuellement le besoin de formatage.

Il est possible d’importer de nouveaux fichiers bau pour faire un import en masse. Mais je bloque sur la structure fine d’un de ces fichiers. J’ai essayé de faire le fichier Ajout_en_masse.bau en remplaçant l’extension .zip par .bau d’un répertoire compressé, ce répertoire comportant un fichier BlockList.xml avec une seule entrée, un répertoire Toto qui contient le fichier Toto.xml prévu pour remplacer le raccourci Toto par Toto, c'est le plus beau et un fichier atevent.xml.

Contenu du fichier Toto.xml:

<office:document xmlns:block-list="http://openoffice.org/2001/block-list" xmlns:text="http://openoffice.org/2000/text" xmlns:office="http://openoffice.org/2000/office" block-list:list-name="Standard">
<office:body>
<text:p>Toto, c'est le plus beau.</text:p>
</office:body>
</office:document>

Contenu du fichier atevent.xml :

<office:auto-text-events xmlns:office="http://openoffice.org/2000/office" xmlns:text="http://openoffice.org/2000/text" xmlns:script="http://openoffice.org/2000/script" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink">
<office:events>
<script:event script:language="StarBasic" script:event-name="on-insert-done" script:macro-name="Template.Autotext.Main" script:location="application" script:library="application"/>
</office:events>
</office:auto-text-events>

Ma difficulté est que la boîte de dialogue d’import ne reconnaît pas ce fichier bau. Je vais poser la question sur le forum anglo-saxon.

2e Ajout

L’import concerne les Autotextes intégrés à un document MS Word, ce qui expliquent qu’il ne permet pas l’intégration d’un fichier .bau.

Par l’ajout d’un Autotexte, dans la catégorie Mes Autotextes, il apparaît que la même structure est utilisée dans le fichier <répertoire du profile LO de l’utilisateur>/autotext/mytexts.bau, sans fichier atevent.xml mais avec un complément : un répertoire METAT-INF est utilisé qui comporte un fichier manifest.xml qui contient le code suivant :

<?xml version="1.0" encoding="UTF-8"?>
<manifest:manifest>
 <manifest:file-entry manifest:full-path="/" manifest:media-type=""/>
 <manifest:file-entry manifest:full-path="BlockList.xml" manifest:media-type="text/xml"/>
 <manifest:file-entry manifest:full-path="TOTO/TOTO.xml" manifest:media-type="text/xml"/>
</manifest:manifest>

Donc pour ajouter le nouvel Autotexte ‘Titi, c’est le plus joli’, sans format (= texte seul), il “suffit” d’ajouter un répertoire TITI qui contient le fichier TITI.xml, construit comme le fichier TOTO.xml ci-dessus, d’ajouter une ligne au fichier META-INF/manifest.xml au sujet du fichier “TITI/TITI.xml” et enfin d’ajouter une ligne au fichier BlocList.xml.

Ces modifications sont pérennes. Tant que le pofil de l’utilisateur n’est as réinitialisé.

Ceci étant établi, il ne reste “plus” qu’à écrire une macro qui ira lire un tableau contenant trois colonnes : les noms des autotextes, leurs raccourcis et les contenus, puis qui créera les répertoires ad hoc et complétera les fichiers BlockList.xml et manifest.xml. N’étant pas à l’aise avec les macros, je laisse ma place à un autre bénévole pour ce faire. Mais il existe de nombreux exemples sur ce forum ou sur le wiki.

Il sera donc utile de conserver et la sauvegarde de la macro et le tableau qui l’accompagne pour réinitaliser le profil après réinitialisation d’icelui.

La structure du fichier mytexts.bau est à affiner si une mise en forme des Autotextes est à préserver.

Ajout du 26/10/2020

En l’absence de compétence en macro, il est possible de réaliser le travail avec une feuille de calcul. Voir le modèle ci-joint qui permet de réaliser très facilement les fichiers manifest.xml et BlockList.xml et fournit le contenu des fichiers de données qu’il est possible de créer manuellement avec un éditeur de texte.

Récupérer le fichier modèle ci-dessus.

Remplacer les valeurs d’essai dans le bloc B18:Ennn, en tenant bien compte de l’ordre des données entre Nom du fichier et du répertoire, raccourci qui sera tapé dans le texte, nom du raccourci qui explicite l’autotexte quand ce dernier devra être recherché dans la liste des raccourcis et enfin le contenu de l’autotexte.

Etendre les formules de G22:N22 à Gnnn:Nnnn

Le contenu du fichier manifest.xml se trouvera en Hnnn.

Celui de BlockList.xml sera en Knnn.

Et le contenu de chaque fichier de données se trouve dans la colonne N, avec son nom en colonne M.

Créer l’ensemble de ces fichiers et les compresser dans un fichier mytexts.zip.

Renommer ce dernier en mytexts.bau et le placer dans le répertoire répertoire du profile LO de l'utilisateur/autotext/

Cordialement, Michel

Merci à TOUS et surtout à celui qui m’a écrit le dernier message qui fonctionne.

Je n’en comprends pas tout à fait le principe mais ce qu’il y a de certain, c’est que les 1476 lignes d’autotext (au lieu de 600 puisque de ce fait j’en ai rajouté) sont rentrées sans difficultés.

Vous êtes au TOP.

Cordialement,

Manoub1