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

Répondre à