Enregistrer macros, résultat ? [Résolu/Fermé]

Signaler
Messages postés
638
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
24 mai 2021
-
Messages postés
638
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
24 mai 2021
-
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 !


3 réponses

Messages postés
638
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
24 mai 2021
50
Personne pour un coup de pouce ? :)
Messages postés
2481
Date d'inscription
vendredi 25 juillet 2014
Statut
Membre
Dernière intervention
15 juin 2021
1 134
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
Messages postés
638
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
24 mai 2021
50
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 !