Merci pour ces infos.
Je dois dire que j'ai lu et relu votre livre ( vraiment indispensable pour
développer sur OOo sans trop galérer ).
J'ai bien lu ( page 371 édition 2 ) que le paramètre passé à la fonction doit
être un tableau; j'ai lu aussi page 373 que si un argument utilise les valeurs
d'une zone de cellules, il apparaît sous forme d'un tableau à 2 dimensions.
J'en ai conclu à tort, que je pouvais directement passer ce tableau à la
fonction.
Pour info, il semblerait dans mon exemple qu'une colonne se comporte comme une
zone de cellules puisque j'ai interchangé la ligne:
Cible = ThisComponent.CurrentController.ActiveSheet.Columns(0)
par
Cible = ThisComponent.CurrentController.ActiveSheet.GetCellRangeByName("A1:A10")
sans aucun changement de comportement du logiciel.
Mon but était d'optimiser le code pour remplacer une ou deux boucles et des
test sur les cellules par une fonction Calc plus rapide.
En fait j'ai trouvé la solution page 354: la méthode computeFunction de l'objet
zone de cellule:
Sub UtiliserFonctionZONE
Dim Cible as Object
Cible = ThisComponent.CurrentController.ActiveSheet.Columns(0)
Rem Cible =
ThisComponent.CurrentController.ActiveSheet.GetCellRangeByName("A1:A10")
Print FonctionZONE(com.sun.star.sheet.GeneralFunction.COUNT, Cible)
End Sub
Function FonctionZONE(Fonction as Integer, Argument As Variant)
FonctionZONE = Argument.ComputeFunction(Fonction)
End Function
Sur des tableaux importants, c'est la méthode la plus rapide à l'exécution que
j'ai trouvée jusqu'à présent.