[Basic] utilisation de CallFuntion

Bonjour,

J’essaie d’utiliser dans une macro une fonction de Calc en suivant l’exemple
donné dans l’ouvrage de Marcelly et Godard, mais j’obtiens l’erreur suivante
:

Erreur d'exécution BASIC.

Une exception s'est produite :

Type: com.sun.star.container.NoSuchElementException

Voici le programme d’essai :

Sub alea

            Dim service As Object, x As long

            service = createUnoService("com.sun.star.sheet.FunctionAccess")

            x = service.callFunction("RANDBETWEEN", Array(1000, 2000))

            print x

End Sub

Qu’est-ce que je fais de mal ?

Merci de votre aide

Michel

Bonjour

Michel Rudelle wrote

Qu’est-ce que je fais de mal ?

Rien à proprement parler... c'est que tu es juste tombé sur une
fonction "addin"

x = service.callFunction("com.sun.star.sheet.addin.Analysis.getRandbetween",
Array(1000, 2000))

Cordialement
Pierre-Yves

Merci Pierre-Yves,

-----Message d'origine-----
De : pierre-yves samyn [mailto:pierre-yves.samyn@laposte.net]
Envoyé : mercredi 11 septembre 2013 16:50

Michel Rudelle wrote
> Qu’est-ce que je fais de mal ?

Rien à proprement parler... c'est que tu es juste tombé sur une
fonction "addin"

x =
service.callFunction("com.sun.star.sheet.addin.Analysis.getRandbetween",
Array(1000, 2000))

Ok merci, ça marche

1/ j'avais bien vu sur un forum quelque chose de similaire, mais:
  a) la fonction n'est pas dans les add-in de l'Assistant Fonctions (est-ce
une notion différente ?)
  b) dans le SDK, j'ai bien trouvé le service Addin, mais je n'ai pas su
aller au-delà pour trouver la liste des types de fonctions et les fonctions
(c'est-à-dire comment savoir que Randbetween est dans Analysis ?)

2/ Et chose curieuse, après avoir posté, j'ai tenté avec le nom français de
la fonction:
service.callFunction("ALEA.ENTRE.BORNES",Array(1000,2000))

Et ça marche! Mais ça ne devrait pas ???

Bonne soirée,
Michel

Suite...

Michel Rudelle wrote

  a) la fonction n'est pas dans les add-in de l'Assistant Fonctions
(est-ce
une notion différente ?)
  b) dans le SDK, j'ai bien trouvé le service Addin, mais je n'ai pas su
aller au-delà pour trouver la liste des types de fonctions et les
fonctions
(c'est-à-dire comment savoir que Randbetween est dans Analysis ?)

En effet, la catégorie de l'assistant fonction est celle utilisée dans cette
FAQ https://wiki.documentfoundation.org/Macros/Calc/013/fr

Ici le "truc" est de se référer au nom donné par la propriété "formula"

Il y a aussi ceci:
http://docs.libreoffice.org/sc/html/odffmap_8cxx_source.html

Michel Rudelle wrote

2/ Et chose curieuse, après avoir posté, j'ai tenté avec le nom français
de
la fonction:
service.callFunction("ALEA.ENTRE.BORNES",Array(1000,2000))

Et ça marche! Mais ça ne devrait pas ???

En effet... mais comme c'est l'exception mieux vaut ne pas prendre
l'habitude :slight_smile:

Cordialement
Pierre-Yves