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


Bonjour,
quelques nouvelles de la macro qui a encore un peu avancé grâce à votre
aide!

J'ai un ajouter la gestion du temps pour arriver à ne traiter que les
fichiers qui ont étaient édité les 24 dernières heures mais il me faut le
tester. Grâce à LG j'ai pu définir le filtrage par le mot cours sans
respecter la casse.
Mais j'ai un problème qui m'a donné mal à la tête cette après midi... le
filtrage ne se fait plus autrement dit tous les fichiers odt sont traité
alors qu'il ne devrai traiter que les fichiers qui contiennent le mot cours
(sans prendre en compte la casse).
Le problème étant que ça ne retourne aucun message d’erreur...du coup je
sèche un peu.

La macro complète via pastbin: http://pastebin.com/s9RMjp4H

Merci pour vos lumières.

Le 17 juin 2015 17:51, Cemoi Cemoi <matlane2014@gmail.com> a écrit :

Bonjour,
voila une version qui s'approche fortement de la version finale:

REM  *****  BASIC  *****

Sub Main

    repBase="/home/cemoi/Documents/bactma/Projet_01/" 'chemin à adapter

    ' boucle sur les repertoires et sous repertoires et traitement des
fichiers
    call boucleRepertoire(convertToUrl(repBase))

     msgBox "Fin du traitement"

End Sub

sub boucleRepertoire(sUrl)

    oSFA = createUnoService("com.sun.star.ucb.SimpleFileAccess")

    ListeFichiers = oSFA.getFolderContents(sUrl, True)

    for each sNom in ListeFichiers
         if oSFA.IsFolder(sNom) then
             call boucleRepertoire(sNom) ' appel recursif
         else
            if endWith(sNom, ".odt") then
                if not endWith(sNom,"_eleve.odt") then
                       if instr(sNom, "cours") > 0 then
                           call traiteFichier(sNom) ' on traite ce fichier
                       end if
                end if
            endif
        endif
    next sNom

end sub

function endWith(chaine, cherche)

    endWith = ( right(chaine, len(cherche)) = cherche)

end function

sub traiteFichier(urlFichier)

    ' ouverture
    doc = starDesktop.loadComponentFromUrl(urlFichier,"_blank",0, array())

    ' traitement des styles
    call RemplacerStylePartout2(doc)

    ' nom de fichier de sortie
    spliter = split(doc.url, ".") ' decoupe la chaine avec les points
    nb = ubound(spliter)
    spliter(nb-1) = spliter(nb-1)+"_eleve"

    spliter(nb)="pdf"
    newUrlPdf = join(spliter,".")

    spliter(nb)="odt"
    newUrlOdt = join(spliter,".")

    'enregistrement nouveau odt
    doc.storeAsUrl(newUrlOdt, array()) ' aucune option, array vide

    ' options de l'export pdf
    dim propsFiltre(0 to 0) as new com.sun.star.beans.PropertyValue
    propsFiltre(0).name = "IsSkipEmptyPages"
    propsFiltre(0).value = False

    dim prop(0 to 1) as new com.sun.star.beans.PropertyValue
    prop(0).name="FilterName"
    prop(0).value = "writer_pdf_Export"
    prop(1).name="FilterData"
    prop(1).value = propsFiltre()

    ' export pdf
    doc.storeToUrl(newUrlPdf, prop() )

    ' on ferme le fichier initial sans modification
    doc.close(false)

end sub

Sub RemplacerStylePartout2(MonDocument)

    Dim JeCherche As Object

    JeCherche = MonDocument.createReplaceDescriptor

    with JeCherche
      .SearchString  = "Texte eleve visible"
      .ReplaceString = "Texte eleve invisible"
      .SearchStyles = true
    end with

    MonDocument.replaceAll(JeCherche)

End Sub

Un grand merci à Laurent G qui m'a fortement aidé!! Même si il a trouvé
que j'avais fait quasi toutes les routines plus ou moins fonctionnelles ça
du lui prendre 5min chrono en main pour terminer la macro...

Cette macro fonctionne il me faut ajouter la fonctionnalité de ne traiter
que les fichiers qui ont étaient modifié le X dernières heures cela dans le
but de ne pas traiter tous les fichiers de l'arborescense à chaque
traitement.
Il me faut l'adapter pour pouvoir l'executer sur un serveur (sans
interface graphique sous linux)
Âpres ça je documenterai un peu plus la macro avec des commentaires dedans
pour qu'elle puisse être réutilisés.


Merci beaucoup à tous ceux qui m'ont aidé!

Le 7 juin 2015 17:06, Cemoi Cemoi <matlane2014@gmail.com> a écrit :

Bonjour,
je m'excuse si je ne suis pas trop en ligne en ce moment... merci
beaucoup à vous deux, il y a peu de monde capable ou prenant le temps
d'étudier une telle demande qui est quand même un poil complexe...


Un exemple de l'utilisation de SimpleFileAccessqui se trouve à la page
155 du livre programmer avec openoffice.org 2, il compte les repertoires
et le fichiers:

Option Explicit

' exemple : compter le nombre de sous-répertoires et le nombre total de
fichiers
Private d as long, f as long

Sub Main
Dim depart As String
d= 0
f = 0
depart = ConvertToURL("C:\Docs OpenOffice\") 'adapter le chemin en
fonction du besoin
explorerDossier(depart)
MsgBox(d & " répertoires,   " & f & " fichiers")
End Sub


Sub explorerDossier(ByVal repEnCours As String)
Dim item As String
Dim ucb As Object, dc As Variant

ucb = createUnoService("com.sun.star.ucb.SimpleFileAccess")
On Error GoTo accesInterdit
dc = ucb.getFolderContents(repEnCours, True)
' ici on obtient un tableau des url complètes
' de chaque fichier et chaque répertoire du répertoire en cours
' mais dans le désordre !
for each item in dc
  if ucb.IsFolder(item)  then ' traitement pour chaque sous-répertoire
    d = d+1 ' exemple : compter les sous-répertoires
    explorerDossier(item) ' récursion
  else ' traitement pour chaque fichier
    f = f+1 ' exemple : compter les fichiers
  end if
next
GoTo Exit1

accesInterdit:
Resume Exit1
Exit1:
On Error GoTo 0
End Sub
J'espére pouvoir travailler dessus cette semaine et vous faire un retour.
Je documenterai un peu la macro quand elle sera fonctionnelle dans
l'optique qu'elle puisse être utilisable par le plus grand nombre.

Best regard :)

Le 1 juin 2015 18:48, pierre-yves samyn <pierre-yves.samyn@laposte.net>
a écrit :

Bonjour Laurent

Surtout merci à toi de qui j'ai tant appris même si tu ne le sais pas
(projet ancien...), et l'occasion de remercier aussi Andrew Pitonyak &
Bernard Marcelly (livre et Xray).

Pierre-Yves



--
View this message in context:
http://nabble.documentfoundation.org/Macro-Basic-generation-de-cours-eleve-a-partir-de-fichier-cours-enseignant-tp4149242p4150227.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.