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 <[email protected]> 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 <[email protected]> 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 <[email protected]>
>> 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 à [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 à