[Résolu][Writer] Perte champs quand modifications autotextes

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 !
Solaris
Membre hOOnoraire
Membre hOOnoraire
Messages : 146
Inscription : 02 août 2017 21:55

[Résolu][Writer] Perte champs quand modifications autotextes

Message par Solaris »

Bonjour à tous,

J'ai cette macro qui me permet de modifier mes autotextes en une seule manip et c'est top. Elle marche très bien mais elle enlève tous les champs insérés dans le contenu de l'autotexte. J'ai bien mon champs qui apparaît (par exemple : <XXXXX>) mais il n'a plus de lien vers ma base de données.

Comment résoudre ce problème svp ?

Merci par avance.

Solaris

Code : Tout sélectionner

    REM  *****  BASIC  *****
    Private Const motOrigine = "DUPONT" 
    Private Const motNouveau = "DURAND"

    Sub Main
    atc = createUnoService("com.sun.star.text.AutoTextContainer")
   ' Mettre le nom du fichier .bau qui est dans C:\Users\ce.ri\AppData\Roaming\LibreOffice\4\user\autotext '
    mesAutoTextes = atc.GetByNAme("Données")
    for i = 0 to mesAutotextes.count-1
       unAutotexte = mesAutotextes.GetByIndex(i)
       ancienTexte = unAutotexte.GetString
       nouveauTexte = Join(Split(ancienTexte, motOrigine), motNouveau)
       unAutotexte.SetString(nouveauTexte)
    next i
    End Sub
Dernière modification par Solaris le 19 févr. 2020 14:00, modifié 1 fois.
Libre office 7.3.2.2
Windows 11
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25175
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Writer] Perte des champs quand modifications autotextes

Message par Dude »

Abracadabra... Joins donc le fichier en question :
Solaris a écrit :Mettre le nom du fichier .bau qui est dans C:\Users\ce.ri\AppData\Roaming\LibreOffice\4\user\autotext
Ou en tout cas, un exemple concret permettant de reproduire.
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: [Writer] Perte des champs quand modifications autotextes

Message par OOotremer971 »

Bonjour,

A tester à partir du menu Outils>Exécuter la macro :

Code : Tout sélectionner

Option Explicit

Private Const motOrigine = "Dupont"
Private Const motNouveau = "Durand"

Sub Main
dim atc As Object, mesAutoTextes As Object, unAutotexte As Object
dim curseur1 As Object, curseur2 As Object 
dim a As String, leTexte As String
dim i As Long, b As Long
atc = createUnoService("com.sun.star.text.AutoTextContainer")
'Remplacer le cas échéant mytexts par le nom du fichier .bau (sans l'extension .bau) de : 
'pour Windoxs : C:\Users\ce.ri\AppData\Roaming\LibreOffice\4\user\autotext
'pour linux : /home/utilisateur/.config/libreoffice/4/user/autotexte
mesAutoTextes = atc.GetByNAme("mytexts")
for i = 0 to mesAutotextes.count-1
	Do
		unAutotexte = mesAutotextes.GetByIndex(i)
		leTexte = unAutotexte.GetString
		a = leTexte
		b = InStr(1, a, motOrigine, 0)
		if b > 0 Then
			curseur1 = unAutotexte.Text.createTextCursor
			curseur1.goRight(b-1,False)
			curseur2 = unAutotexte.Text.createTextCursorByRange(curseur1)
			curseur2.goRight(len(motOrigine),True)
			curseur2.String = motNouveau
		end if
	Loop Until b = 0
next i
End Sub

La précédente méthode insérait, comme un nouvel auto-texte, la globalité de l’auto-texte modifié. C'est sans doute la raison pour laquelle le lien des champs était perdu.
Celle-ci ne modifie que les mots concernés dans l'auto-texte sans toucher au reste de l'auto-texte.
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
Solaris
Membre hOOnoraire
Membre hOOnoraire
Messages : 146
Inscription : 02 août 2017 21:55

Re: [Writer] Perte des champs quand modifications autotextes

Message par Solaris »

Merci beaucoup c'est parfait!

bien cordialement
Libre office 7.3.2.2
Windows 11