Bonjour
Plusieurs remarques :
Comme déjà noté, la procédure
attend un paramètre. Il faut donc lui passer quand on l'appelle.
Par ailleurs, la méthode print est une méthode "document" et non "plage".
Les objets "feuilles" disposent d'une méthode "PrintAreas" permettant de définir des zones d'impression mais ce n'est a priori pas ce qui est souhaité ici : sélection d'une plage de cellules puis impression.
Donc, si j'ai bien compris..., je préconiserais plutôt de sélectionner la plage puis d'utiliser le dispatcher pour lancer l'équivalent de la commande Fichier Imprimer Sélection.
Concernant la sélection la syntaxe utilisée :
Ne donnera pas le résultat escompté car, s'agissant d'une plage, il faut utiliser getCellRangeByPosition.
Par ailleurs, ceci affecte à la variable "Selection" la plage, mais cela ne sélectionne pas "dans le tableau". Pour cela on utilise une syntaxe du genre :
Code : Tout sélectionner
MaSelection = Mafeuille.getCellRangeByPosition(0, 3, 6, 10)
Mondocument.currentController.Select(MaSelection)
Ce qui nous donne au total (extrait) :
Code : Tout sélectionner
sub ExoImprimersel
dim Mondocument as object
dim dispatcher as object
dim MaSelection as object
dim Mesfeuilles as object
dim Mafeuille as object
dim args3(2) as new com.sun.star.beans.PropertyValue
Mondocument=thiscomponent
Mesfeuilles = Mondocument.sheets
Mafeuille = Mesfeuilles.getByName("CULT")
MaSelection = Mafeuille.getCellRangeByPosition(0, 3, 6, 10)
Mondocument.currentController.Select(MaSelection)
Mondocument = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
args3(0).Name = "Copies"
args3(0).Value = 1
args3(1).Name = "Selection"
args3(1).Value = true
args3(2).Name = "Collate"
args3(2).Value = false
dispatcher.executeDispatch(Mondocument, ".uno:Print", "", 0, args3())
end sub