Macro ne fonctionne pas

Résolu
Bonjour,

Je ne connais rien à libreoffice openoffice mais je dois m'y mettre (sur libreoffice) et je dois notamment faire des macros (je suis un utilisateur modeste d'excel VBA).

j'ai regardé sur net, j'ai copié stricto sensus un code libreoffice sensé marcher mais ça ne marche pas chez moi (libreoffice Version: 6.2.8.2 (x64), windows 10). je cherche mais je ne trouve pas alors je ne suis décidé a venir demander de l'aide, d'avance merci !

j'ai l'impression qu'il me manque des extensions ou je ne sais quoi pour que ça marche (pour faire marcher les lignes de type com.sun.star....?) , voici le code copié et qui me renvoi erreur 423 (sur la ligne : dimensionsForme.Widht = 2600) quand je exécute :

public Sub test01

Dim monDoc As Object
Dim lesFeuilles As Object
Dim maFeuille As Object
Dim maPage As Object
Dim maForme As Object
Dim dimensionsForme As New com.sun.star.awt.Size
Dim positionForme As New com.sun.star.awt.Point
 
monDoc = ThisComponent
lesFeuilles = monDoc.Sheets
maFeuille = lesFeuilles.getByName("tableau_bord")
maPage = mafeuille.DrawPage

dimensionsForme.Widht = 2600
dimensionsForme.Height = 1200
positionForme.x = 3500
positionForme.y = 3500

maForme = monDoc.createInstance("com.sun.star.drawing.EllipseShape")
maForme.Size = dimensionForme
maPage.add(maForme)
maForme.Position = positionForme

end sub


merci d'avance

Configuration: Windows / Chrome 83.0.4103.106

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Pour ton info, la macro fonctionne.
    Il faut juste être un peu plus rigoureux quant à la rédaction des variables.


    1. merci beaucoup !

      effectivement, je pensais a un truc beaucoup plus compliqué mais là ça marche,
  2. Bonjour

    remplacer : dimensionsForme.Widht = 2600
    par :
    dimensionsForme.Width = 2600


    remplacer : maForme.Size = dimensionForm
    par
    maForme.Size = dimensionsForme
    1. parfait merci
  3. Modérateur
    Bonjour,

    Essaye l'exemple page 80 de ce document : https://jazz.ensil.unilim.fr/outils_info/OOo_API_intro-04.pdf
    1. Bonjour et merci pour le doc,

      j'ai essayé, j'ai aussi un message d'erreur, différent cette fois erreur '1' type: com.sun.star.lang.illegalArgumentException

      par curiosité j'ai installé apache openoffice, j'ai le même message d'erreur sur cette macro.
  4. tien après avoir installé open office et réouvert libreoffice, j'ai ce message à l'ouverture de libreoffice :

    "libreoffice nécessite un environnement d'exécution java (JRE) 64-bit pour réaliser cette tâche. Veuillez installer un JRE puis redémarrer LibreOffice"

    c'est surement ça le pb, ceci dit j'ai souvenir d'avoir vu ce message et d'avoir fait ce qui était demandé, je vais refaire et voir si le problème persiste.

    EDIT : Bon j'ai réinstallé JRE, en faisant attention de choisir 64bit (j'avais surement fait 32bit qui est par défaut la première fois), je n'ai plus le message d'erreur mais par contre mes macros continuent de ne pas fonctionner
    1. "Ne pas fonctionner" n'aidera pas ceux qui tentent de vous aider.
      Il faut fournir un document intégrant la macro.

      Et le plus simple est de vous adresser sur un forum spécialisé en programmation :
      https://forum.openoffice.org/fr/forum/forum24-programmation-macro-basic.html

      .
      1. Bonjour,

        Merci pour le lien.

        Pour "ne pas fonctionner", je crois qu'il y a quand même du détail dans mes posts au delà de cette phrase..., y compris un exemple de code qui ne s’exécute pas car erreur, les messages d'erreurs...
        j'ai essayé avec un document totalement vide et seulement la macro ci dessus, j'ai toujours une erreur en tentant d’exécuter la macro.

        je vais tenter ma chance sur le forum en lien.

        Cordialement
      2. @Damien007La macro fait référence à du contenu dans un document.
        Sans fournir ce dernier, comment voulez-vous qu'on fasse ?
      3. @OOoForumPardon j'ai peut-être oublié de préciser que j'ai aussi essayé suivant les conseils de pikaju de taper le code fournit page 80 dans un fichier vierge et cela ne fonctionne pas non plus (j'ai juste changé la page de 2 à 0 et le nom du fichier pour qu'il existe chez moi). en fait j'ai l'impression que peut importe le code, que c'est plutôt un problème d'extension, d'environnement...


        public Sub test02

        Dim MonDocument As Object
        Dim UnePage As Object
        Dim MonImage As Object
        Dim LeBitmap As Object
        Dim Taille1 As New com.sun.star.awt.Size
        Dim Position1 As New com.sun.star.awt.Point
        Dim Proportion As Double
        MonDocument = ThisComponent
        UnePage = MonDocument.drawPages(0) ' page de la troisième feuille Draw
        MonImage = MonDocument.createInstance("com.sun.star.drawing.GraphicObjectShape")
        MonImage.GraphicURL = ConvertToURL(" C:\temp\44.jpg ")
        Position1.x = 2500 ' 25 mm à droite du coin haut-gauche de la page
        Position1.y = 5300 ' 53 mm plus bas que le coin haut-gauche de la page
        UnePage.add(MonImage)
        LeBitmap = MonImage.GraphicObjectFillBitmap

        end sub


        dans ma macro du premier post, hormis le nom de la feuille, rien ne vient du fichier, j'ai tenté de créer une ellipse (en fait ce code vient aussi d'un ouvrage, pas de moi)

        sinon je ne sais pas comment joindre un fichier à mon post. voici un lien de téléchargement pour mon fichier test
        https://we.tl/t-5sUCOvfaLf
    2. Contributeur
      hello
      vérifier Outils -> Options -> Libreoffice -> Sécurité -> Sécurité des macros
      1. merci pour cette réponse, j'avais effectivement vérifié ça.