Bonjour, je veux reproduire ce que je faisais avec find en shell en fait pour que tout soit dans la macro et surtout que pour que cela puisse servir à d'autres. Je m'explique: si je fais la recherche le filtrage et le renomage des fichiers avec le shell j'aurais une macro qui ne peux pas faire tout le travail à elle seule, elle perd donc de son intérêt (je parle pour l'interet commun dans l'optique d'être réutilisé).
Avant de me lancer dans cette macro je faisais un: <https://forum.openoffice.org/fr/forum/viewtopic.php?f=8&t=47475#>find /home/cemoi/Documents/cible -type f -mtime -1 -iname "*eleve*.odt" -execdir libreoffice --headless --convert-to pdf '{}' \; Ca veut dire: cherche et trouve dans toute l'arborescence de /home/cemoi/Documents/cible tous les fichiers modifié il y a 24h ou moins de 24h ayant les caractéres (sans prendre en compte la casse) eleve dans leur nom et ayant comme extension odt puis ça passe les resultats à libreoffice qui est exécuté en -headless pour convertir en pdf tous les fichiers trouvé. Attention ici chaque pdf est mis au même endroit que le fichier source avec lequel il est généré. Comme on a des problèmes pour tenir à jour tous les fichiers eleves (et ça prend aussi pas mal de temps) je me suis dis qu'il serai bon que cela soit automatiser... en remplaçant le styleprof par des ___ comme cela il ne resterai plus qu'à générer le pdf pour que cela sorte le document eleve. pour le moment je fais la recherche de tous les fichiers odt contenant le mot cours puis j'y ajoute le suffix _eleve puis je le copie comme ça je conserve ma source voila le code: #! /bin/bash IFS= find /home/cemoi/Documents/bactma/seconde/ \ -type f \ -iname '*cours*.odt' \ -not -iname '*_eleve.odt' \ -print0 | while read -rd '' name do new_name=$(echo $name|sed 's/\.odt$/_eleve.odt/') if [ "$name" -nt "$new_name" ] then cp "$name" "$new_name" fi done la macro que je veux faire doit faire en premier ce script (si dessus) puis remplacer les caractéres des styles text prof par des_____à tous les *eleve.odt puis enregistrer ces midifications et enfin générer un pdf de ce fichier. Attention la macro parcours une arborecense elle est recursive. Quand la macro sera terminé elle sera exploité sur un serveur de fichiers sur lequel des enseignants travail chaque jour. les cours enseignants seront traité par la macro ce qui sortira tous les cours_calculs_flexion_eleve.odt (ici je parle du fichier déja modifié par la macro) et cours_calculs_flexion_eleve.pdf à partir du fichier cours_calculs_flexion.odt (qui est le document complet sur lequel les enseignants travail). Sur le serveur de fichiers il y a une branche de l'arborecsence pour la "fabrication des cours" et une branche "cours terminé et /ou en production. Voila la macro mais elle n'est pas terminé: Option Explicit 'LG Global monTab() as String dim monTab() as String Sub CopierFichier Dim Chemin as String, NomFichier as String, Fichier(), NewName as String Dim X as Integer ' LG initialise Redim monTab(0) Chemin = ConvertToURL("/home/cemoi/Documents/bac/seconde/")'le chemin est à adapter à l'emplacement des fichiers NomFichier = Dir(Chemin & "Cours*.odt") X = 0 Do While NomFichier <> "" Fichier = Split(NomFichier,".") NewName = Fichier(0) & "_eleve.odt" 'LG X = X +1 ' reDim Preserve monTab(X) redim Preserve monTab(1 to X) monTab(X) = ConvertToURL(Chemin & NewName) Filecopy ConvertToURL(Chemin & NomFichier), monTab(X) NomFichier = Dir() ' LG inutile X = X + 1 Loop RemplacerStyle End Sub Sub RemplacerStyle() Dim oDocument as Object, searchDescriptor As Object Dim Args(0) as New com.sun.star.beans.PropertyValue Dim i as Integer Args(0).Name = "Hidden" Args(0).Value = True 'LG essaye dejà avec false FOR i=1 to UBound(monTab) 'LG For i = 0 to UBound(monTab) oDocument = StarDesktop.loadComponentFromURL(monTab(i),"_blank",0,Args ()) searchDescriptor = oDocument.createReplaceDescriptor With searchDescriptor .SearchString = "Texte prof" .ReplaceString = "Blanc" .SearchStyles = True End With oDocument.replaceAll(searchDescriptor) oDocument.Store() ExportPDF(oDocument,monTab(i)) Next i End Sub Sub ExportPDF(oDoc as Object,monFichier as String) Dim oURL as String Dim Args(0) as New com.sun.star.beans.PropertyValue oURL = Left(monFichier,CInt(Len(monFichier))-3) & "pdf" Args(0).Name = "FilterName" Args(0).Value = "writer_pdf_Export" oDoc.storeToURL(oUrl,args()) oDoc.Close(True) Kill(monFichier) MsgBox("Le fichier " & ConvertFromURL(oURL) & " à été créé") End Sub à la ligne oURL = Left(monFichier,CInt(Len(monFichier))-3) & "pdf" ça retourne l'agument n'est pas facultatif Je ne comprends pas ce que contient la variable momFichier on dirait qu'elle est vide! Et je ne comprends pas pourquoi... Merci pour votre aide! -- Envoyez un mail à [email protected] pour savoir comment vous désinscrire Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
