Date: prev next · Thread: first prev next last
2015 Archives by date, by thread · List index


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 <matlane2014@gmail.com> 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 <matlane2014@gmail.com> 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 <matlane2014@gmail.com> 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 <pierre-yves.samyn@laposte.net>
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 à users+unsubscribe@fr.libreoffice.org 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 à users+unsubscribe@fr.libreoffice.org 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

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.