Pour utiliser d'autres fonctions que NBVAl() - COUNTA() en anglais il faut utiliser le nom anglais de la fonction.
Merci à B Marcelli et L Godard, je me suis inspiré de leur livre "Programmation d'OpenOffice.org2 - Macros et API" ainsi que d'un tutoriel de L Godard pour écrire cette procédure. Je l'utilise, entre-autres, pour rechercher le nombre de données présentes dans un feuille et ainsi connaitre les coordonnées de la première ligne vide.
Code : Tout sélectionner
REM ***** BASIC *****
Option Explicit
Sub Lpg_NombreValeurs()
Rem **************************************************
REM Cette procédure exécute la fonction Calc NBVAL() dans la plage de cellules (A1:A10)
REM Il suffit de remplacer NBVAL() par n'importe quelle autre fonction et (A1:A10) par n'importe quelle autre plage
REM par Loopingss - 2009
REM procédure proposée pour Suprème de Code le 29/01/2009
REM **************************************************
Dim oSht as Object, oZoneCell as Object, oAcces as Object
Dim Result as Long, Arg(0) as Variant
oSht = ThisComponent.Sheets.getByName("Feuille1") 'Accès à la feuille
Arg(0) = oSht.getCellRangeByName("A1:A10") 'La plage de données est passée en arguments
REM Il est possible d'utiliser une plage nommée
'Arg(0) = oSht.getCellRangeByName("PlageDonnees"), PlageDonnees représentant (A1:A10)
oAcces = CreateUnoService("com.sun.star.sheet.FunctionAccess")
Result = oAcces.callFunction("COUNTA",Arg()) 'Execution de la fonction
Print "Nombre de données = ", Result, spc(1)
End Sub
Attention : lire aussi : [Calc] Traduction en anglais de fonction en langue locale