Macros situées dans deux endroits

classic Classic list List threaded Threaded
3 messages Options
Jaccomard Jaccomard
Reply | Threaded
Open this post in threaded view
|

Macros situées dans deux endroits

Bonjour à tous,

Dans un classeur, j'ai une macro locale (stockée dans
fichier->standard->"suivi"->"impressioninterro".

Cette macro, liée, donc, au classeur, fait appel à une macro installée
grâce à une extension dans "Mes macros et boîtes de
Dialogue"->BibliDocalea->DocAlea_>Moulinette.

L'appel se fait avec  :      Call BibliDocalea.Docalea.Moulinette(doc3),
où "doc3" est un document writer ouvert avant l'appel.

Si je lance ma macro "impressioninterro", deux cas se produisent :

-si j'ai auparavant édité et resauvegardé  "Moulinette", pas de pb, ça
marche.

-sinon, "commande introuvable".


Comment résoudre ce problème ?

A noter qu'il me met, quand j'édite, un message d'avertissement sur
Java. Est-ce en rapport ?

(version lo : 5.3.1.2 - Windows 10 pro, à jour)

Merci déjà pour l'aide apportée par cette liste, et d'avance pour cee
problème.

O.J.




---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus


--
Envoyez un mail à [hidden email] pour 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
Jean-Francois Nifenecker Jean-Francois Nifenecker
Reply | Threaded
Open this post in threaded view
|

Re: Macros situées dans deux endroits

Bonsoir,

Le 14/05/2017 à 18:51, Jaccomard a écrit :

>
> Dans un classeur, j'ai une macro locale (stockée dans
> fichier->standard->"suivi"->"impressioninterro".
>
> Cette macro, liée, donc, au classeur, fait appel à une macro installée
> grâce à une extension dans "Mes macros et boîtes de
> Dialogue"->BibliDocalea->DocAlea_>Moulinette.
>
> L'appel se fait avec  :      Call BibliDocalea.Docalea.Moulinette(doc3),
> où "doc3" est un document writer ouvert avant l'appel.
>
> Si je lance ma macro "impressioninterro", deux cas se produisent :
>
> -si j'ai auparavant édité et resauvegardé  "Moulinette", pas de pb, ça
> marche.
>
> -sinon, "commande introuvable".
>
>
> Comment résoudre ce problème ?
>

Sous LibreOffice, les bibliothèques se trouvent dans deux conteneurs
possibles :
-- le document
-- le conteneur Mes Macros et le conteneur global

Les macros qui se trouvent dans les bibliothèques "Standard" (quel que
soit le conteneur) s'exécutent immédiatement lors de l'appel.

En revanche, les macros qui sont dans d'autres bibliothèques ne
s'exécutent qu'après le chargement des bibliothèques qui les
contiennent, par l'instruction LoadLibrary().

Ton interrogation (les deux cas que tu rencontres) s'explique exactement
de cette manière. En ouvrant la bibliothèque (même sans rien y faire),
tu as exécuté manuellement le fameux LoadLibrary() kivabien, du coup ton
programme fonctionne [1]. Dans le 2e cas le programme ne fonctionne pas
car le LoadLibrary() n'a pas eu lieu.

Pour  que ça marche, il faut que, dans ton programme, tu aies ceci :

GlobalScope.BasicLibraries.loadLibrary("BibliDocalea")

GlobalScope fait référence aux conteneurs Mes Macros et global. Par
exemple, si tu utilises des outils livrés avec LibreOffice dans la
bibliothèque "Tools", tu doit d'abord la charger :

GlobalScope.BasicLibraries.loadLibrary("Tools")

Pour info, tu peux éviter les erreurs de chargement en testant
l'existence des bibliothèques :

If GlobalScope.BasicLibraries.hasByName("Tools") Then ...


> A noter qu'il me met, quand j'édite, un message d'avertissement sur
> Java. Est-ce en rapport ?

mmmm... j'en doute.


[1] C'est d'ailleurs un très bon moyen de charger xray() ;)


Très cordialement,
--
Jean-Francois Nifenecker, Bordeaux


--
Envoyez un mail à [hidden email] pour 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
Jaccomard Jaccomard
Reply | Threaded
Open this post in threaded view
|

Re: Macros situées dans deux endroits

Le 14/05/2017 à 23:08, Jean-Francois Nifenecker a écrit :

> Bonsoir,
>
> Le 14/05/2017 à 18:51, Jaccomard a écrit :
>>
>> Dans un classeur, j'ai une macro locale (stockée dans
>> fichier->standard->"suivi"->"impressioninterro".
>>
>> Cette macro, liée, donc, au classeur, fait appel à une macro installée
>> grâce à une extension dans "Mes macros et boîtes de
>> Dialogue"->BibliDocalea->DocAlea_>Moulinette.
>>
>> L'appel se fait avec  :      Call BibliDocalea.Docalea.Moulinette(doc3),
>> où "doc3" est un document writer ouvert avant l'appel.
>>
>> Si je lance ma macro "impressioninterro", deux cas se produisent :
>>
>> -si j'ai auparavant édité et resauvegardé  "Moulinette", pas de pb, ça
>> marche.
>>
>> -sinon, "commande introuvable".
>>
>>
>> Comment résoudre ce problème ?
>>
>
> Sous LibreOffice, les bibliothèques se trouvent dans deux conteneurs
> possibles :
> -- le document
> -- le conteneur Mes Macros et le conteneur global
>
> Les macros qui se trouvent dans les bibliothèques "Standard" (quel que
> soit le conteneur) s'exécutent immédiatement lors de l'appel.
>
> En revanche, les macros qui sont dans d'autres bibliothèques ne
> s'exécutent qu'après le chargement des bibliothèques qui les
> contiennent, par l'instruction LoadLibrary().
>
> Ton interrogation (les deux cas que tu rencontres) s'explique
> exactement de cette manière. En ouvrant la bibliothèque (même sans
> rien y faire), tu as exécuté manuellement le fameux LoadLibrary()
> kivabien, du coup ton programme fonctionne [1]. Dans le 2e cas le
> programme ne fonctionne pas car le LoadLibrary() n'a pas eu lieu.
>
> Pour  que ça marche, il faut que, dans ton programme, tu aies ceci :
>
> GlobalScope.BasicLibraries.loadLibrary("BibliDocalea")
>
> GlobalScope fait référence aux conteneurs Mes Macros et global. Par
> exemple, si tu utilises des outils livrés avec LibreOffice dans la
> bibliothèque "Tools", tu doit d'abord la charger :
>
> GlobalScope.BasicLibraries.loadLibrary("Tools")
>
> Pour info, tu peux éviter les erreurs de chargement en testant
> l'existence des bibliothèques :
>
> If GlobalScope.BasicLibraries.hasByName("Tools") Then ...
>
>
>> A noter qu'il me met, quand j'édite, un message d'avertissement sur
>> Java. Est-ce en rapport ?
>
> mmmm... j'en doute.
>
>
> [1] C'est d'ailleurs un très bon moyen de charger xray() ;)
>
>
> Très cordialement,

Parfait, et limpide, Jean-François. Merci de m'avoir éclairé !

Cordialement,

O.J.


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus


--
Envoyez un mail à [hidden email] pour 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