Page 1 sur 1

[Calc] Exécuter des fonctions par programmation

MessagePublié: 29 Jan 2009 23:09
par Loopingss
Voici une procédure qui permet d'exécuter une fonction Calc simple de type NBVAL(), NB(), MIN(), MAX(), etc ... dans un code Basic.
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   AgrandirRéduire
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