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.

Répondre à