Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

compatibilité des macros open office- libre office


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre à l'essai
    compatibilité des macros open office- libre office
    Bonjour,

    J'utilise depuis déjà pas mal de temps Open Office et j'envisage de migrer vers Libre Office.
    Les 2 suites utilisant les mêmes extensions ODS je pensais que ce serait direct mais
    Je rencontre un problème de compatibilité de mes macros:

    exemple:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
     
    sub Main
    rem ----------------------------------------------------------------------
    rem define variables
    dim document   as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
     
    rem ----------------------------------------------------------------------
    dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "ToPoint"
    args1(0).Value = "$A$1"
     
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
     
    rem ----------------------------------------------------------------------
    dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
     
    rem ----------------------------------------------------------------------
    dim args3(0) as new com.sun.star.beans.PropertyValue
    args3(0).Name = "ToPoint"
    args3(0).Value = "$D$1"
     
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
     
    rem ----------------------------------------------------------------------
    dim args4(5) as new com.sun.star.beans.PropertyValue
    args4(0).Name = "Flags"
    args4(0).Value = "SVD"
    args4(1).Name = "FormulaCommand"
    args4(1).Value = 1
    args4(2).Name = "SkipEmptyCells"
    args4(2).Value = false
    args4(3).Name = "Transpose"
    args4(3).Value = false
    args4(4).Name = "AsLink"
    args4(4).Value = false
    args4(5).Name = "MoveMode"
    args4(5).Value = 4
     
    dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args4())
     
     
    end sub


    Le code ci dessus réalisé sous Open Office réalise un simple collage spéciale avec addition.

    Le même code sous Libre Office insère une nouvelle colonne et colle le contenu dans cette nouvelle colonne.
    Il semble que pour obtenir le même résultat que sous Open Office il faille modifier la valeur de l'argument MoveMode" pour le passer de 4 à 6...La macro ne fonctionnera alors plus sous Open Office !

    Il semble donc que pour réaliser cette migration je soit obligé de revoir toutes mes macro !!!

    Existe t'il quelque part un descriptif des instructions de ce "langage de programmation macro" et des arguments qui correspondent ou sommes nous obligé de bidouiller avec l'enregistreur de macro ?

    Existe t'il une manière automatique de convertir les macros Open Office en macro Libre Office ?

  2. #2
    Membre à l'essai
    Bon je vois que mon sujet ne passionne pas les foules !!

  3. #3
    Rédacteur

    Salut,

    Depuis la version 4, des différentes sont apparues entre OpenOffice et LibreOffice. Mais il n'existe aucune information sur les commandes qui fonctionnent ou pas avec l'une ou l'autre des suites.

    Cdlt.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  4. #4
    Membre à l'essai
    c'est pas tres cool !

  5. #5
    Membre chevronné
    Citation Envoyé par zoom61 Voir le message
    Mais il n'existe aucune information sur les commandes qui fonctionnent ou pas avec l'une ou l'autre des suites.
    Bien sûr que si : https://forum.openoffice.org/fr/foru...breoffice.html
    Rédacteur PHP / Delphi ADO / Novell / OpenOffice.org

    Inutile de m'envoyer vos questions par MP, je ne réponds que par le forum.

  6. #6
    Rédacteur

    Citation Envoyé par Bidouille Voir le message
    Il y a d'autres commandes qui ne sont pas citées dans la liste et qui ne fonctionnent pas dans LibreOffice ou OpenOffice, et elles sont souvent utilisées dans des extensions, ce qui rend ces extensions inutilisables dans l'une ou l'autre des applications.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  7. #7
    Expert confirmé
    hello,

    jmlat a dit :
    Le même code sous Libre Office insère une nouvelle colonne et colle le contenu dans cette nouvelle colonne.
    Le problème c'est que tu ne nous as pas dit avec quelle version de LibreOffice et sous quel O.S .

    Moi en version LibreOffice 4.4.1.2 sous windows 7, je n'ai pas pas le problème : avec un MoveMode à 4 , j'ai le fonctionnement nominal (je n'ai pas de nouvelle colonne).

    Voir d'ailleurs un exemple ici

    Edit : Bon je suis allé fouiner dans les sources de Libreoffice et voici ce que j'ai trouvé en ce qui concerne MoveMode :
    MoveMode correspond à une énumération (InsCellCmd) qui se trouve dans le fichier sc\inc\global.hxx

    pour la version 4.4.1.2 de Libreoffice :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    enum InsCellCmd
        {
            INS_CELLSDOWN,
            INS_CELLSRIGHT,
            INS_INSROWS,
            INS_INSCOLS,
            INS_NONE
        };


    et pour la version 5.1.1.1 de LibreOffice :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    enum InsCellCmd
        {
            INS_CELLSDOWN,
            INS_CELLSRIGHT,
            INS_INSROWS_BEFORE,
            INS_INSROWS_AFTER,
            INS_INSCOLS_BEFORE,
            INS_INSCOLS_AFTER,
            INS_NONE
        };


    Comme on peut le constater c'est la valeur 4 qui fait un INS_NONE (pas de décalage) dans le cas de la version 4.4.1.2 et la valeur 6 dans le cas de la version 5.1.1.1.
    Avec la valeur 4 on a INS_INSCOLS_BEFORE dans le cas de LibreOffice 5.1.1.1
    C'est quand même dommage que LibreOffice n'ait pas conservé la compatibilité

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  8. #8
    Membre à l'essai
    En effet je viens de le telecharger j'ai donc la version 5...

    En effet pourquoi ce changement qui brise la compatibilité ?

    Je constate surtout que ces suites ne sont pas stables dans le temps concernant les macros en tout cas et que les changement de version ne prennent pas en compte les macros pour assurer leur fonctionnement .
    Si je comprend bien lorsqu'on utilise des macros il ne faut surtout pas faire de mise à jour !!!

    De plus il est très difficile de trouver les détails de chaque instruction.

    En tout cas cas merci à "jurassic pork" pour ces éclaircissement.

    Je redoute qu'il y ai d'autre modifications que je ne vois pas aussi facilement et qui perturbe le fonctionnement de mes feuilles de calcul ...je pense donc que je vais rester sur Open Office !

###raw>template_hook.ano_emploi###