[Résolu] [Calc] Appel d'un objet d'un module depuis un autre

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
bonsaiko
Membre OOrganisé
Membre OOrganisé
Messages : 61
Inscription : 12 oct. 2023 14:37

[Résolu] [Calc] Appel d'un objet d'un module depuis un autre

Message par bonsaiko »

Bonjour à tous,

Avant toute chose je précise que je débute avec Libre Office.

J'ai un certain nombre de modules dans mon classeur, et le code de chaque module va faire référence à un objet ErrorHandling que j'ai défini dans un module du même nom.

J'ai donc écrit ce code dans un de mes modules :

Code : Tout sélectionner

    Dim ErrorHandling As Object
    Set ErrorHandling = CreateUnoService("ErrorHandling")
        
    On Error GoTo errAutoOpen
    

    
    errAutoOpen:
    ErrorHandling.HandleError False, "MonModule - MaFonction()", Err.Number, Err.Source, Err.Description, ErrorVersionDefaut
L'idée étant de pouvoir utiliser ça partout, dans tous les modules pour avoir la gestion des erreurs centralisée à un endroit.

Et pourtant lorsque j'exécute mon code j'ai une erreur sur la partie "ErrorHandling.handleError...

Le message est : Variable d'objet non définie.

Je ne comprends pas, je pense que c'est dû au fait que la variable est mal définie mais je n'arrive pas à comprendre comment faire.

Quelqu'un pourrait-il m'aider svp ?

Merci par avance !
Dernière modification par bonsaiko le 19 oct. 2023 21:40, modifié 1 fois.
Libre Office 7.6.2.1 Windows Server
Avatar de l’utilisateur
Dolev
SuppOOrter
SuppOOrter
Messages : 1047
Inscription : 19 août 2018 05:20

Re: [Calc] Appel d'un objet d'un module depuis un autre

Message par Dolev »

Bonsoir,
bonsaiko a écrit : 13 oct. 2023 15:27 Le message est : Variable d'objet non définie.
Euh cela me paraît normal.

Code : Tout sélectionner

Set ErrorHandling = CreateUnoService("ErrorHandling")
Pouvez-vous m'expliquer où dans la documentation de l'API, vous avez vu ce service ?
Le nom complet d'un service démarre par com.sun.star :
https://wiki.openoffice.org/wiki/FR/Doc ... Interfaces
Open Office 4.1.15 sous Windows 11
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 639
Inscription : 09 août 2017 22:15

Re: [Calc] Appel d'un objet d'un module depuis un autre

Message par Jurassic Pork »

Hello,
le seul service d'exception que je connaisse dans L.O, O.O c'est celui de la bibliothèque ScriptForge (présent dans LibreOffice depuis la 7.2). Exemple d'utilisation :

Code : Tout sélectionner

Sub Main()
Dim a, b, c
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
Dim exc : exc = CreateScriptService("Exception")
    exc.Console()
    On Local Error GoTo Catch
    Try:
        a = 10 : b = 0
        c = a / b
        '...
        Exit Sub
    Catch:
         exc.DebugPrint exc.Description
        If exc.Number = 11 Then exc.Clear()
        'If division by zero, ignore the error
End Sub
SF_Exception.png
Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
bonsaiko
Membre OOrganisé
Membre OOrganisé
Messages : 61
Inscription : 12 oct. 2023 14:37

Re: [Calc] Appel d'un objet d'un module depuis un autre

Message par bonsaiko »

Merci pour vos réponses.
Mais du coup je ne comprends pas trop un truc.
Est-ce qu’il est possible de séparer le code dans différents modules ?
Parce que là j’ai un module censé utiliser les méthodes appelées au démarrage, un autre pour les requêtes en base de données, un autre pour les exceptions, etc
Mais quand je suis dans un module je ne comprends pas comment faire pour appeler une méthode contenue dans un autre module.
En l’occurrence j’ai bien un module de gestion des erreurs qui comprend une méthode à appeler en cas d’erreur mais je ne vois pas comment l’appeler depuis le module du départ, et je ne vois pas non plus comment faire pour appeler les méthodes qui gèrent la base de données depuis ce module alors qu’elles sont contenues dans un autre…
Quelqu’un pourrait-il m’aider ?
Libre Office 7.6.2.1 Windows Server
Avatar de l’utilisateur
Dolev
SuppOOrter
SuppOOrter
Messages : 1047
Inscription : 19 août 2018 05:20

Re: [Calc] Appel d'un objet d'un module depuis un autre

Message par Dolev »

Re,
bonsaiko a écrit : 14 oct. 2023 07:06 Mais quand je suis dans un module je ne comprends pas comment faire pour appeler une méthode contenue dans un autre module.
Les macros sont regroupées dans une bibliothèque.
Une bibliothèque contient un ou plusieurs modules.
Dans un module, on peut avoir des Sub ou des Function (pas des méthodes)
Pour appeler un Sub/Function dans un autre module, on indique NomDuModule.NomSub

Si vous ne comprenez pas, joignez un document en indiquant ce que vous cherchez à faire.
Open Office 4.1.15 sous Windows 11
bonsaiko
Membre OOrganisé
Membre OOrganisé
Messages : 61
Inscription : 12 oct. 2023 14:37

Re: [Calc] Appel d'un objet d'un module depuis un autre

Message par bonsaiko »

Merci de votre réponse, c'est très clair.
Libre Office 7.6.2.1 Windows Server