Problème libre office calc: macro calcul fonction mathématique LambertW
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Problème libre office calc: macro calcul fonction mathématique LambertW



  1. #1
    electronm

    Problème libre office calc: macro calcul fonction mathématique LambertW


    ------

    Bonjours à tous,
    après plusieurs jours à tourner autour du pot, j'ai fini par venir vous demander de l'aide.
    Je dois utiliser une macro VBA, elle ne fonctionne pas correctement, et c'est la première fois que je doit utiliser une macro dans une feuille de calcul.

    Je sais pas si c'est mieux de proposer mon sujet dans la section mathématique ou logiciel.
    Je l'ai donc mis ici, puisqu'il s'agit plutôt d'un problème d'utilisation de libre office cal.

    Voila le contexte de mon problème :
    Je me suis fait une feuille de calcul qui me génère une courbe de forme exponentielle.
    Cette courbe est destiné à corriger une courbe linéaire.
    La feuille de calcul me donne directement le nombre voulu d'éléments (d'un tableau) à copier coller dans mes programmes (langage C, micro-contrôleur).

    Pour information toute la feuille de calcul fonctionne parfaitement.
    Voici un exemple de courbe calculé avec 6 points :



    Mon niveau mathématique n'étant pas foufou, j'utilise régulièrement les solveurs mathématique, lorsque cela devient nécessaire.
    J'ai deux courbes, et il me faut le point d'intersection.



    courbe 1 : f(x)=x
    courbe 2 : f(x)=(ex-a)-(e-a)

    Il me faut donc résoudre :
    x=(ex-a)-(e-a)


    Le solveur de ma calculatrice (TI-83 premium) fonctionne direct, je lui donne "a" et il me donne "x", OK très bien.
    Maintenant il me faut l'intégrer dans ma feuille de calcul.
    Le solveur sur internet que j'utilise me donne la formule suivante :



    Pour résoudre le problème il faut utiliser la fonction de Lambert W (Oméga), qui est une fonction qui fait intervenir les nombres complexe.
    Voila une fonction mathématique que je ne connaissais pas.

    La fonction n'existe pas dans libre office, donc je cherche une macro sur le net.
    Je trouve ceci : https://www.vbforums.com/showthread....complex-number

    Puis finalement je trouve quelqu'un qui l'à modifié pour calc de libre office.
    Ici : https://gist.github.com/m93a/a0199c4...6810daa46dd92d

    Donc je fait un nouveau module, j'insère le code, j'utilise la fonction dans ma cellule, et là ça ne fonctionne pas.

    Voila mon problème :
    Alors, il reconnais le nom de la fonction, déjà c'est bien.
    Il rentre à l’intérieur, OK.
    Par-contre il à un problème sur cette ligne (ligne n°6) :
    Complex = svc.callFunction ...

    Code:
    Function Complex(a As Double, b As Double) As Any
       Dim svc As Object
       svc = createUnoService("com.sun.star.sheet.FunctionAccess")
       Complex = svc.callFunction("COMPLEX",Array(a,b))
    End Function
    Il me dis :
    Erreur d'exécution BASIC.
    Une exception s'est produite :
    Type: com.sun.star.container.NoSuchE lementException
    Message: .




    Comme si il n'avais pas connaissance d'une bibliothèque, d'un module ou un truc du genre.
    Peut être que je ne fait pas ce qu'il faut pour ajouter une macro.
    Je rappel que c'est la première fois que j'ai a utiliser une macro, je suis donc novice novice ++ en utilisation/édition de macro.

    Si quelqu'un peut m'assister pour ajouter cette macro, ce serait génial.
    Ceci me permettrais d'utiliser ma feuille de calcul, sans utiliser un outil externe pour calculer ce point d'intersection.

    Le fichier complet de la macro est disponible ici : https://gist.github.com/m93a/a0199c4...6810daa46dd92d.

    NB : je sais que la solution à l'équation à deux solutions.
    Mais, un problème à la fois, je verrais en fonction du résultat obtenu.
    La première chose est de faire fonctionner cette satané macro.

    -----
    Images attachées Images attachées

  2. #2
    umfred

    Re : Problème libre office calc : macro calcul fonction mathématique LambertW

    Comme sous excel, il y a l'option de recherche de valeur cible https://help.libreoffice.org/latest/.../goalseek.html
    par exemple en cellule A1, tu mets une valeur au pif (0) pour X, et en A2 pour A; dans B1, ta formule =EXP(A1-A2)-EXP(-A2)


    Sinon l'erreur vient du fait qu'il faut passer les noms de fonctions en français dans les appels svc.callFunction
    Donc remplacer dans le code:
    "COMPLEX" => "COMPLEXE"
    "IMEXP"=>"COMPLEXE.EXP"
    "IMPRODUCT" =>"COMPLEXE.PRODUIT"
    "IMREAL"=>"COMPLEXE.REEL"
    "IMAGINARY"=>"IMAGINAIRE"
    "IMSUM"=>"COMPLEXE.SOMME"
    "IMSUB" => "COMPLEXE.DIFFERENCE"
    "IMSQRT"=>"COMPLEXE.RACINE "
    "IMLN" => "COMPLEXE.LN"
    "IMDIV"=>"COMPLEXE.DIV"

  3. #3
    electronm

    Re : Problème libre office calc : macro calcul fonction mathématique LambertW

    En effet je vient de m'en apercevoir.
    J'ai remplacé le nom des fonctions par le nom français, et la fonction s’exécute sans erreurs.

    C'est quand même dommage qu'il ne soit pas compatible avec toutes les langues d'un coups.
    Ça limite la portabilité d'un code venant d'une personne venant d'un autre pays.

    Il doit bien y avoir moyen de forcer la langue locale utilisé, au début de la macro.


    L'idée de l'option "recherche de valeur cible", je connaissais pas c'est pas mal, mais ça ne peut pas marcher pour mon cas.
    mon opération n'est pas :
    EXP(x-a)-EXP(-a)

    mais :
    x = EXP(x-a)-EXP(-a)

    Ce que je cherche c'est x.
    La seule solution de le sortir de l'exponentielle est d'utiliser la fonction de Lambert W.

    Par-contre je vois qu'il y à un solveur, j'avais jamais vu.
    je vais voir si il peut me donner des résultats.

    En tout cas merci pour la solution, bien que j'ai découvert ta réponse alors que j'allais dire que j’avais trouvé.
    Merci encore

Discussions similaires

  1. Fonction de LambertW, LibreOffice calc. Je ne parviens pas au bon résultat
    Par electronm dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 05/09/2021, 11h34
  2. Libre-office Calc: recherche dans une liste?
    Par Liet Kynes dans le forum Logiciel - Software - Open Source
    Réponses: 14
    Dernier message: 27/06/2021, 15h58
  3. Ouvrir Calc et Writer en même temps dans Libre Office…
    Par Naos46 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 25/02/2020, 14h11
  4. Problème Open Office Calc
    Par invite2d775226 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 14/12/2012, 18h05
  5. Problème open office calc!
    Par invite77aae725 dans le forum Logiciel - Software - Open Source
    Réponses: 10
    Dernier message: 12/10/2006, 09h28
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...