Utilisation de procédures ou de fonctions pour simplifier l'écriture des macro en calc

Bonjour

Dans le but de rendre plus lisible une macro de traitement dans calc, je voudrais remplacer des séquences du type

Preformatted text
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = “By”
args1(0).Value = 1
args1(1).Name = “Sel”
args1(1).Value = false
dispatcher.executeDispatch(document, “.uno:GoDown”, “”, 0, args1())
Preformatted text

par l’appel d’une subroutine, _GoDown

J’ai fait plusieurs essais, sans succès, par exemple

`Preformatted text`
sub Main
.
.
.
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")
.
.
.
_GoDown(document, dispacher)¨.
.
.
end sub

sub _GoDown(pDocument as object,pDispacher as object)
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "By"
args1(0).Value = 1
args1(1).Name = "Sel"
args1(1).Value = false
pDispatcher.executeDispatch(pDocument, ".uno:GoDown", "", 0, args1())
end sub

Preformatted text

Pouvez-vous me proposer un modèle pour répondre à ce genre de besoin?

Jean

Ton appel ne fonctionnera pas. Ta variable passée à _GoDown est mal écrite :
dispatcher et non dispacher
Même chose dans ta fonction où tu récupères pDispacher et que tu appelles par pDispatcher

Oui, là c’est corrigé, mais ça ne marche toujours pas

sub Main
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")

_GoDown(document, dispatcher)

end sub

sub _GoDown(pDocument as object, pDispatcher as object)
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "By"
args1(0).Value = 1
args1(1).Name = "Sel"
args1(1).Value = false
pDispatcher.executeDispatch(pDocument, ".uno:GoDown", "", 0, args1())
end sub

J’ai le message:

Une erreur de structure de script s’est produite lors de l’exécution du script Standard.Module2._GoDown en Basic.

Message : wrong number of parameters!

Je n’ai pas d’erreur de mon côté :
test

Merci pour ton aide, j’ai compris ce qui n’allais pas.
Pour lancer la macro avec outils/macros/exécuter la macro, dans le formulaire Sélecteur de macro, je sélectionnais le module (colonne Bibliothèque) au lieu de sélectionner Main (colonne Macro) avant de cliquer le bouton exécuter. Ceci avait comme effet de lancer l’exécution de la procédure _GoDown au lieu de la procédure Main.

Si c’est résolu, merci de l’indiquer.

J’ai une autre question, si en plus de passer les objets document et dispatcher je veux passer les arguments args1 dans l’appel de la fonction _GoDown, quelle serait la syntaxe de l’appel et de l’instruction sub _GoDown(
Evidement,
dim args1(1) as new com.sun.star.beans.PropertyValue
serait placé dans le Main.
Dans cette hypothèse, par quoi serait remplacée l’instruction

args1(1).Value = false

par exemple

Bonjour,

Autre sujet, autre fil de discussion. Ça permet de mieux s’y retrouver !
Bonne soirée,
JM