J'ai continué à travailler sur ma macro je pense que je vais faire un autre
sujet pour que le titre soit explicite.
Je mets le code ici quand même:
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
Il n'est pas terminé mais pas loin :)
Le 22 mai 2015 13:27, Cemoi Cemoi <[email protected]> a écrit :
> @Fs
> Je me suis trompé de macro... c'est celle là la bonne:
>
>
> 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
>
> Cordialement.
>
> Le 15 mai 2015 22:08, Cemoi Cemoi <[email protected]> a écrit :
>
>> @Fs
>> Texte prof c'est le nom du style
>> dans lequel tous les caractéres seront remplacé par des __
>>
>> tu ouvres un doc de test tu crais un style Texte prof puis tu l'appliques
>> à une partie du texte. Apres ça tu charges et exécutes la macro.
>>
>> Pour ma première partie du script sensé faire la meme chose que la
>> version en shell et bien ça ne marche pas et ça ne retourne aucune
>> erreur... du coup je tourne en rond :/
>>
>>
>>
>>
>> Le 10 mai 2015 15:56, Cemoi Cemoi <[email protected]> a écrit :
>>
>>> @ Pierre C
>>>
>>> regarde plus haut la macro que j'ai mise elle fonctionne bien pour ce
>>> que tu veux faire.
>>>
>>> @ Pierre-Yves
>>> j'ai commencé à faire ça;
>>>
>>> post; sub main
>>>
>>> repBase="/home/cemoi/owncloud/perso/test_macro/"
>>> fichier = dir(repBase+"*_eleve*.odt")
>>> while fichier<>""
>>> call traiteFichier(repBase+fichier)
>>> fichier = dir()
>>> wend
>>>
>>> end sub
>>>
>>> Mais je ne comprends pas tout ce que je fais là... :/
>>>
>>> en fait je tente de faire ce que je fais deja en shell mais en basic...
>>> En shell ça donne ça:
>>>
>>> #! /bin/bash
>>>
>>> find /home/cemoi/Documents/cible -type f -iname "*cours*.odt" |
>>> while read name
>>> do
>>> new_name=$(echo $name|sed 's/\.odt$/_eleve.odt/')
>>> if [ "$name" -nt "$new_name" ]
>>> then
>>> cp "$name" "$new_name"
>>> fi
>>> done
>>>
>>>
>>> Ca parcours l'arborescense du repertoir cible en y cherchant tous les
>>> fichier odt ayant le mot cours (sans prendre en compte la casse) ça y
>>> ajoute le prefix _eleve au nom existant de chaque fichier trouvé puis ça
>>> copie le fichier si le fichier source fait le même poids si non non.
>>>
>>> à la suite dans la macro je voudrai ajouter le code
>>>
>>> Option Explicit
>>> 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
>>>
>>> pour l'appliquer en recursif sur le repertoir cible sur chaque fichier
>>> odt ayant le mot eleve et en fin faire l'export en pdf une fois les styles
>>> modifié.
>>>
>>> L'intéret de tout faire en basic c'est de pouvoir faire un .oxt une fois
>>> que tout ça fonctionnera.
>>>
>>> Merci pour votre aide precieuse!
>>>
>>> Cordialement, cemoi.
>>>
>>> Le 10 mai 2015 06:50, pierre-yves samyn <[email protected]>
>>> a écrit :
>>>
>>>> Bonjour
>>>>
>>>>
>>>> Cemoi Cemoi wrote
>>>> > je comprends l'idée mais sans ... ou ___ ça va être moyen pour ecrire
>>>> > sur les documents.
>>>>
>>>> Oui... si je t'avais proposé d'utiliser le blanc. Or ma proposition
>>>> était de
>>>> recourir à un léger gris qui va créer l'équivalent visuel d'une zone de
>>>> saisie.
>>>>
>>>> Je préfère cela à un souligné qui me rappelle trop les anciens documents
>>>> administratifs à remplir. Choix subjectif donc...
>>>>
>>>> Par ailleurs j'ai le sentiment que cela sera plus rapide à l'exécution
>>>> que
>>>> le
>>>> remplacement du texte. Ce n'est qu'un sentiment, je n'ai fait aucun
>>>> essai,
>>>> mais, compte tenu du volume de documents à traiter cela peut entrer en
>>>> ligne de compte...
>>>>
>>>>
>>>> Cemoi Cemoi wrote
>>>> > ...je ne veux que le pdf de modifié et surtout pas le fichier
>>>> source...
>>>> > ... La macro au depart doit parcourir l'arborescense pour trouver
>>>> tous les
>>>> > ...fichiers *.odt, ajouter le mot eleve au nom de chaque fichier
>>>>
>>>> Si tu appelles ta macro dans un script, pourquoi ne pas simplement
>>>> copier en renommant tes documents dans le script puis manipuler
>>>> ces copies dans ta macro ?
>>>>
>>>> Sinon, en basic tu peux utiliser la fonction GetFileNameWithoutExtension
>>>> de la bibliothèque Tools, par exemple :
>>>>
>>>> dim sNomDoc as string, sNewNomDoc as string
>>>>
>>>> GlobalScope.BasicLibraries.LoadLibrary("Tools")
>>>>
>>>> sNomDoc = convertToUrl("c:\Tests\a.odt")
>>>> sNewNomDoc = GetFileNameWithoutExtension(sNomDoc)
>>>> sNewNomDoc = sNewNomDoc & "Eleve.odt"
>>>>
>>>> Name sNomDoc As sNewNomDoc
>>>>
>>>> Cordialement
>>>> Pierre-Yves
>>>>
>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://nabble.documentfoundation.org/masquer-un-style-a-l-impression-tp4146314p4148299.html
>>>> Sent from the Users mailing list archive at Nabble.com.
>>>>
>>>> --
>>>> 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
>>>>
>>>
>>>
>>
>
--
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