hello,
il y a au moins deux solutions :
- Créer un add-in. Pour cela consulter l'excellent tutoriel d'Hubert Lambert
ici
- Utiliser un "wrapper" en basic qui va relier la fonction écrite en python à du basic qui peut définir des fonctions personnelles pour calc.
Pour la deuxième solution voici un exemple qui crée une nouvelle fonction qui inverse la chaîne de caractères contenue dans une cellule.
1 - Tout d'abord je conseille fortement d'installer l'extension d'Hubert Lambert
apso_v1.1.0.oxt qui se trouve
ici.
2 - Créer la fonction
Reverse en python :
a - Cliquer sur Menu
Outils/Macros/Gérer les scripts python (il faut que l'extension
apsos soit installée pour avoir ce menu)
b - Dans la fenêtre qui s'ouvre, sélectionner
Mes Macros et cliquer sur le bouton
Menu et choisir
Nouveau Module.
c - L'appeler
MesFonctionsPerso et cliquer sur le bouton
OK.
d - Le module est alors disponible dans
Mes Macros.
e - Le sélectionner et cliquer sur le bouton
Menu.
f - Cliquer sur
Modifier, le fichier python
MesFonctionsPerso.py s'ouvre alors dans l'éditeur choisi pour l'extension apsos.
Si vous n'avez pas encore désigné un éditeur python pour apsos :
1 - Menu
Outils/Gestionnaire des extensions. Sélectionner
Apsos et cliquer sur le bouton
Options.
2 - Dans la fenêtre qui s'ouvre, cliquer sur le bouton
Choisir et donner le chemin de votre éditeur python favori (moi j'utilise
Geany )
g - Dans votre éditeur coller ce code :
h - Enregister le fichier.
3 - Maintenant que la fonction en python est définie, il faut s'attaquer à la partie "Basic"
4 - Dans Menu
Outils/Macros/Gérer les Macros Sélectionner
LibreOffice Basic... ou
OpenOffice Basic...
5 - Dans la fenêtre qui s'ouvre, sélectionner
Mes Macros et cliquer sur le bouton
Gérer.
6 - Cliquer sur le bouton
Nouveau et taper
MesFonctionsPerso comme nom du module.
7 - L'éditer et remplacer le contenu du module par celui-ci :
Code : Tout sélectionner
REM ***** BASIC *****
REM Keep a global reference to the ScriptProvider, since this stuff may be called many times:
Global g_MasterScriptProvider
REM Specify location of Python script, providing cell functions:
Const URL_Main = "vnd.sun.star.script:MesFonctionsPerso.py$"
REM &location=user pour les macros personnelles
Const URL_Args = "?language=Python&location=user"
Function getMasterScriptProvider()
if NOT isObject(g_MasterScriptProvider) then
oMasterScriptProviderFactory = createUnoService("com.sun.star.script.provider.MasterScriptProviderFactory")
g_MasterScriptProvider = oMasterScriptProviderFactory.createScriptProvider("")
endif
getMasterScriptProvider = g_MasterScriptProvider
End Function
Function GetScript(NomFonction)
sURL = URL_Main & NomFonction & URL_Args
oMSP = getMasterScriptProvider()
GetScript = oMSP.getScript(sURL)
end Function
function Reverse(LaChaine)
script = GetScript("Reverse")
REM Pour éviter les erreurs de type on force la variable LaChaine en chaîne
Reverse = script.invoke(Array(CStr(LaChaine)), Array(), Array())
end function
8 - Enregister. Quitter L.O ou O.O et relancer.
9 - Voilà si je n'ai pas raconté de bêtises et si vous n'avez pas fait d'erreur la fonction Reverse devrait être alors disponible dans calc :
Fonction Python - LibreOffice Calc.png
Vous pourrez ajouter aussi d'autres nouvelles fonctions en éditant les modules python et Basic
MesFonctionsPerso.
Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.