Bonjour,

Merci beaucoup de votre réponse.
Votre macro fonctionne très bien, c'est bien ce que je cherchais.
Je ne connaissais pas isLibraryPasswordProtected ni verifyLibraryPassword. Cela va mieux avec !

Je maintiens cependant que si on cherche à ouvrir la bibliothèque sans utiliser ces fonctions, donc sans donner le mot de passe, et qu'on tente de modifier le contenu d'un module, il n'y a pas de message d'erreur mais on n'a ensuite plus accès à la bibliothèque, le mot de passe est refusé (que ce soit via une macro ou via l'EDI). Et ce bien que, contrairement à ce que je pensais dans mon précédent message, on ait en fait pas accès au contenu des modules qui effectivement ne s'affiche pas (donc qui n'a pas pu être lu).

En tout cas sur mon système, si je copie votre macro telle quelle en enlevant simplement les 3 lignes
        if (libCont.isLibraryPasswordProtected(libName) = true) then
                libCont.verifyLibraryPassword(libName, passw)
        end if
je n'ai aucun message d'erreur mais les macros du document traité ne sont plus accessibles.

En tout cas, encore merci!

Pascal


Thibault Vataire a écrit :
Bonjour,

Je n'arrive pas à reproduire votre problème :

1/ lorsqu'une de mes librairies est protégée par mot de passe, je n'arrive pas 
à lire/modifier sont contenu avec une autre macro.
2/ lorsque j'ouvre cette librairie avec le mot de passe, je peux lire/modifier 
le contenu et le sauvegarder. Cela n'empêche en rien d'accéder à son contenu 
par la suite, que ce soit par macro ou par l'interface graphique.

Voici un exemple de la manière dont je procède :


option explicit

sub main

        dim const passw = "password"
        dim const libName = "mdp"
        dim const modName = "Module1"
        dim doc as object
        dim libr as object
        dim libCont as object
        dim modContent as string
        
        doc = starDesktop.loadComponentFromUrl( 
convertToUrl("/tmp/test_mdp.ods"), _
                                                "_blank", _
                                                
com.sun.star.frame.FrameSearchFlag.CREATE, _
                                                array())
        libCont = doc.basicLibraries
        libCont.loadLibrary(libName)
        libr = libCont.getByName(libName)

        'rien ne s'afficher à cause du mot de passe
        modContent = libr.getByName(modName)
        msgbox(modContent)
        
        'affiche le contenu du module
        if (libCont.isLibraryPasswordProtected(libName) = true) then
                libCont.verifyLibraryPassword(libName, passw)
        end if
        modContent = libr.getByName(modName)
        
        'modifie, met à jour le module et re-affiche le contenu
        libr.replaceByName(modName, (modContent & chr(10) & "'commentaire ajouté au 
module."))
        modContent = libr.getByName(modName)
        msgbox(modContent)
        
        doc.store()
        doc.dispose()

end sub

Est-ce également de cette manière que vous modifiez le contenu de la macro?
Peux-être n'ai-je pas bien compris votre problème?

Cordialement,
T. Vataire


----- Mail Original -----
De: "Pascal Chantriaux" <pascal.chantri...@free.fr>
À: prog@fr.openoffice.org
Envoyé: Dimanche 8 Mars 2009 08h26:39 GMT +01:00 Amsterdam / Berlin / Berne / 
Rome / Stockholm / Vienne
Objet: [prog] Mot de passe bibliotheque

Bonjour,

J'ai écrit une macro qui, à partir d'un document calc A, ouvre un autre document calc B qui contenant une bibliothèque de macro M protégée par mot de passe pour éliminer les lignes de commentaire de M afin de réduire la taille du document B.

Je suis surpris qu'on puisse faire cela sans donner le mot de passe de la bibliothèque (je n'ai pas trouvé comment le faire et cela ne semble pas empêcher la macro d'agir)

Cette macro fonctionne bien comme j'ai pu le constater en la faisant tourner en laissant le document B ouvert par contre si elle sauve ensuite le document B, il n'y a plus moyen d'ouvrir la bibliothèque M, il refuse le mot de passe ainsi que le mot de passe vide.

Ce comportement est-il connu ?

D'avance, merci.

Pascal

---------------------------------------------------------------------
To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
For additional commands, e-mail: prog-h...@fr.openoffice.org




---------------------------------------------------------------------
To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
For additional commands, e-mail: prog-h...@fr.openoffice.org

Répondre à