Enregistrer macros, résultat ?

Résolu/Fermé
Nai Messages postés 711 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 25 août 2023 - 17 juil. 2014 à 16:57
Nai Messages postés 711 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 25 août 2023 - 20 sept. 2014 à 01:20
Bonjour la communauté !

Je suis en train de convertir un tableau Excel sous OpenOffice. Ayant bien compris que le langage des macros n'est pas le même chez l'un et l'autre, je ne cherche pas à convertir du VBA en Basic, mais bien à créer les macros.

Ainsi, OpenOffice propose d'enregistrer une macro. Elle enregistre tout ce que je fais. Lorsque je l'exécute, elle est censé refaire exactement ce que j'ai fais lors de l'enregistrement. Malheureusement, ce n'est pas le cas.

Peut-être y a-t-il quelque chose que je n'est pas compris, mais dans le code, il n'y a aucune référence aux lignes copiées ou insérer. Rien du tout en ce qui concerne les lignes...
sub ajouter_ligne
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 ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertRows", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())

end sub


Je voulais Copier la ligne 10, insérer une ligne vide entre la 10 et là 11 et l'insérer à la place de la nouvelle ligne 11. Cette dernière est devenue la ligne 12. Mais, ça n'a pas marché... :/
L'enregistrement d'une macro nécessite-t-il de faire une autre manipulation ?

Voici le fichier : https://www.cjoint.com/c/DGrqWV7lPIy

Merci d'avance de votre aide !


A voir également:

3 réponses

Nai Messages postés 711 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 25 août 2023 54
19 juil. 2014 à 14:01
Personne pour un coup de pouce ? :)
0
yclik Messages postés 3595 Date d'inscription vendredi 25 juillet 2014 Statut Membre Dernière intervention 26 avril 2024 1 481
25 juil. 2014 à 18:22
bonsoir
Lors de l'enregistrement de la macro commencer par insérer la ligne et ensuite sélectionner les cellules à copier et copier (CTRL+C) et coller CTRL+V)

L'enregistreur fonctionne le mieux en utilisant au maximum le clavier

cela donne

sub ajoute_ligne
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 ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertRows", "", 0, Array())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$A$10:$Z$10"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$A$11"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())

rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "ToPoint"
args6(0).Value = "$A$11"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args6())


end sub
0
Nai Messages postés 711 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 25 août 2023 54
20 sept. 2014 à 01:20
Merci !
Désolé pour le délais !

J'ai complété ton code avec la sélection de la cellule A11 avant le reste de ton code.
Je ne sais pas pourquoi, mais le résultat de la macro dépend de la cellule sélectionné au moment du clic sur la macro...

Du coup, problème résolu en sélectionnant celle qu'il faut :D

Merci !
0