[Résolu] [Writer] Remplacer les caractères d'un style

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 !
cemoi
Membre lOOyal
Membre lOOyal
Messages : 27
Inscription : 15 mai 2010 08:57

[Résolu] [Writer] Remplacer les caractères d'un style

Message par cemoi »

Bonjour,
j'ai des centaines de fichiers de cours et je voudrai pouvoir à partir de ces derniers sortir des *.pdf pour les élèves. Je veux utiliser la macro sur un serveur (debian) via une ligne de commande shell qui appelera la macro pour traiter les fichiers *.odt trouvé par la commande shell. Je pense pouvoir le faire de cette manière:

Code : Tout sélectionner

find /home/cemoi/Documents/cible -type f -iname "*eleve*.odt" -execdir libreoffice --headless "macro:///maBibli1.monModule.maMacro(Arg1, Arg2, ...)" --convert-to pdf '{}' \;
Je ne sais pas si je garderai la fin

Code : Tout sélectionner

 --convert-to pdf
car cela devrai (doit?) pouvoir etre fait par la macro.
Le server est un dedié sur debian il n'y a pas d'interface graphique (pas de serveur graphique donc) j'y ai juste acce via ssh.
Je vous dis tout cela pour que le contexte soit connu car il impose des contraintes.

J'ai besoin de Chercher style prof et remplacer chaque caractère du style prof par un .

Le but étant que les élèves n'aient pas tout le cours de complété.

A partir d'un cours comme celui là:
Cours_La_fiche_de_debit_prof.odt
j'ai mis tous ce qui est dans le style Text prof en bleu (pour une meilleur visibilité) donc la macro doit remplacer chaque caractéres bleu en un . puis l'enregistrer sous (c'est donc une copie) en y ajoutant le mot eleve dans le nom du fichier.

Avec le fichier exemple ça donne: Cours_echelles_eleve.odt

En macro j'en ai une qui remplace le style1 par le style2:
Cours_La_fiche_de_debit_prof.odt
une qui cherche partout un le mot marseille et qui le remplace par le mot bordeaux:
Cours_La_fiche_de_debit_prof.odt
En m'appuyant sur la dernière macro je peux lui demander de remplacer chaque caractére par un . mais je n'arrive pas à trouver comment lui dire de faire cela....

C'est:

Code : Tout sélectionner

  .SearchString = "Marseille"
  .ReplaceString = "Bordeaux"
que je n'arrive pas à manipuler.
Es que je peux faire un

Code : Tout sélectionner

  .SearchString = "*"
  .ReplaceString = "."
Merci pour votre aide!..
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par micmac le 08 mai 2015 10:14, modifié 4 fois.
Raison : [Résolu] remplace [résolu]
Openoffice 3.2/4 sur de multiples postes sous 7
Libreoffice 6.1 sur debian stable (stretch actuellement)
Libreoffice 6.1 sur debian unstable (buster actuellement)
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12230
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [Writer][CLI] Remplacer les caractères d'un style

Message par Bidouille »

Bonjour,

Vous êtes prié de ne pas donner d'explication pointant vers des liens externes à notre forum.
Par expérience, nous savons qu'ils n'ont aucune pérennité dans le temps.

Veuillez utiliser notre service de PJ interne : comment joindre un fichier au format ODF

Merci d'éditer et de corriger votre message en conséquence.
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Re: [Writer][CLI] Remplacer les caractères d'un style

Message par bm92 »

Bonjour,
Est-ce que les élèves reçoivent un fichier PDF ou une copie en papier ?
Parce que si c'est seulement du papier, il suffit de changer en blanc la couleur de caractères dans le style de paragraphe avant de l'imprimer (ou de sortir en pdf à usage interne).
S'ils reçoivent un fichier PDF ce ne sera pas facile pour y écrire quelque chose...

Remarque: le terme[CLI] dans le titre de ce fil est inutile.
Le terme est ambigu :
CLI = Command Line Interface (autrement dit : ligne de commande)
CLI = Command Language Infrastructure (voir Wikipedia)
Et ta question concerne une macro, mais pas la ligne de commande qui l'appelle...
Bernard

OpenOffice.org 1.1.5 fr / Apache OpenOffice 4.1.1 / LibreOffice 5.0.5.2 (X64)
MS-Windows 7 SP1 64bits Familial
cemoi
Membre lOOyal
Membre lOOyal
Messages : 27
Inscription : 15 mai 2010 08:57

Re: [Writer] Remplacer les caractères d'un style

Message par cemoi »

Non blanc ça ne va pas il leur faut un guide pour qu'ils puissent écrire dessus. Oui les élèves ont une version papier. Pour ce qui est d'étiter un pdf ça se fait bien avec Xournal (pour info)

Voila une ebauche de la macro:
ebauche_style_prof_remplace_par....odt
Cordialement
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Openoffice 3.2/4 sur de multiples postes sous 7
Libreoffice 6.1 sur debian stable (stretch actuellement)
Libreoffice 6.1 sur debian unstable (buster actuellement)
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Re: [Writer] Remplacer les caractères d'un style

Message par bm92 »

Et avec ce style ?
Ecran003.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Bernard

OpenOffice.org 1.1.5 fr / Apache OpenOffice 4.1.1 / LibreOffice 5.0.5.2 (X64)
MS-Windows 7 SP1 64bits Familial
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Writer] Remplacer les caractères d'un style

Message par Piaf »

Bonjour
J'avais commencé à bosser un peu dessus avant le message de bm92.
Après son message, le choix est vite fait :lol:

Code : Tout sélectionner

Option Explicit
'Après l'intervention de bm92
Sub RemplacerStyle()
Dim oDoc As Object, searchDescriptor As Object
	oDoc = ThisComponent
	searchDescriptor = oDoc.createReplaceDescriptor
	With searchDescriptor
		.SearchString = "Texte prof"
		.ReplaceString = "Blanc"
		.SearchStyles = true
	End With
	oDoc.replaceAll(searchDescriptor)
End Sub

Sub traiteFichier()
Dim oDoc as Object, searchDescriptor as Object, resultat as Variant
Dim i as Integer, range as Object, cursor as Object, valChamp as String
	oDoc = thisComponent
	searchDescriptor = oDoc.createSearchDescriptor()
	With searchDescriptor
		.SearchString = "Texte prof"
		.searchStyles = True
	End With
	resultat = oDoc.findAll(searchDescriptor)
	If resultat.hasElements() Then
		For i = 0 To resultat.Count-1
			range = resultat(i)
			cursor = range.Text.createTextCursor()
			cursor.goToRange(range, false)
			cursor.collapsetostart()
			cursor.goRight(len(range.string), true)
			valChamp = String(len(range.string),"_")
			cursor.String = valChamp
		Next i	
	EndIf
End Sub
comme j'ai horreur de bosser pour rien :D je met les deux macros à tester
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
cemoi
Membre lOOyal
Membre lOOyal
Messages : 27
Inscription : 15 mai 2010 08:57

Re: [Writer] Remplacer les caractères d'un style

Message par cemoi »

Bonjour,
merci beaucoup pour le coup de pouce!
Les deux versions fonctionne après au niveau du choix effectivement c'est vite fait.

J'ai encore besoin de lui ajouter des actions mais je vais faire un second sujet car cela concerne une question différente et je n'ai pas voulu que le post traite plusieurs questions différentes.
Openoffice 3.2/4 sur de multiples postes sous 7
Libreoffice 6.1 sur debian stable (stretch actuellement)
Libreoffice 6.1 sur debian unstable (buster actuellement)