Contenu

# Utilisation des fonctions Cacl dans les macros

En plus des fonctions BASIC natives, vous pouvez appeler des fonctions Calc dans les macros et scripts et définir des fonctions Calc dans des formules de cellule.

## Appel de fonctions Calc internes en Basic

Utilisez la fonction CreateUnoService pour accéder au service com.sun.star.sheet.FunctionAccess.

### Exemple :

L'exemple ci-dessous crée une fonction nommée MyVlook qui appelle la fonction Calc RECHERCHEV sur une table de données passée en argument et renvoie la valeur trouvée par la fonction.

        Function MyVlook(Lookup, DataArray As Object, Index As Integer, SortedRangeLookup as Byte)
            Dim oService As Object
            Set oService = CreateUnoService("com.sun.star.sheet.FunctionAccess")
            ' Toujours utiliser le nom de la fonction en anglais
            MyVlook = oService.callFunction("VLOOKUP", Array(Lookup, DataArray, Index, SortedRangeLookup))
        End Function

La macro ci-dessous présente un exemple de la façon dont la fonction MyVlook peut être appelée. Une matrice de données 5 sur 2 est d'abord créée, puis appelle la fonction MyVlook et affiche la valeur renvoyée à l'aide de MsgBox.

        Sub CallingMyVlook()
            ' Crée une matrice de 5 par 2 et la remplit de données
            Dim myData(1 to 5, 1 to 2) as Variant
            myData(1, 1) = 1 : myData(1, 2) = "Fortement en désaccord"
            myDatas(2, 1) = 3 : myData(2, 2) = "Pas d'accord"
            myData(3, 1) = 5 : myData(3, 2) = "Indécis"
            myDatas(4, 1) = 7 : myData(4, 2) = "D'accord"
            myData(5, 1) = 9 : myData(5, 2) = "Tout à fait d'accord"
            ' Recherche la matrice de données
            Dim result as String
            result = MyVlook(4, myData, 2, 1)
            ' Affiche le message "Pas d'accord"
            MsgBox result
        End Sub

## Définition de formules de cellule contenant des fonctions Calc internes

Utilisez la chaîne de texte de formule pour ajouter une formule à une cellule de feuille de calcul.

Toutes les fonctions Calc doivent être exprimées avec leurs noms anglais.

### Exemple :

    Sub AssignFormulaToCell
    REM Ajouter une formule à la cellule A1. Le nom de la fonction doit être en anglais.
        oCell = ThisComponent.Sheets.getByIndex(0).getCellRangeByName("A1")
        oCell.Formula = "=SUM(B1:B10)"
    La cellule REM A1 affiche le nom de la fonction traduit.
    End Sub

## Appel de fonctions Add-in Calc en BASIC

Les fonctions Calc Add-In se trouvent dans les services UNO com.sun.star.sheet.addin.Analysis, com.sun.star.sheet.addin.DateFunctions et com.sun.star.sheet.addin.PricingFunctions.

### Exemple :

    REM Exemple d'appel de la fonction Add-in SQRTPI
    Fonction MySQRTPI (arg as double) comme double
       Dim oService as Object
       oService = CreateUnoService("com.sun.star.sheet.addin.Analysis")
       MySQRTPI = oService.getSqrtPi(arg)
    End Function

## Définition de formules de cellule avec des fonctions de l'Add-In

La fonction Add-In doit être exprimée par son nom de service UNO.

### Exemple :

    Sub AssignAddInFormulaToCell
    REM Ajoutez une formule Add-In à la cellule A1. Le nom de la fonction est le nom du service UNO.
        oCell = ThisComponent.Sheets.getByIndex(0).getCellRangeByName("A1")
        oCell.Formula = "=com.sun.star.sheet.addin.Analysis.getBin2Dec(B1)"
    La cellule REM A1 affiche le nom de la fonction traduit.
    End Sub

## Noms de service UNO pour les fonctions complémentaires d'analyse

Le tableau ci-dessous présente une liste de toutes les fonctions du complément d'analyse Calc et leurs noms de service UNO respectifs.

Nom de la fonction Calc | Nom du service UNO
--- | ---
ACCRINT | com.sun.star.sheet.addin.Analysis.getAccrint
ACCRINTM | com.sun.star.sheet.addin.Analysis.getAccrintm
AMORDEGRC | com.sun.star.sheet.addin.Analysis.getAmordegrc
AMORLINC | com.sun.star.sheet.addin.Analysis.getAmorlinc
BESSELI | com.sun.star.sheet.addin.Analysis.getBesseli
BESSELJ | com.sun.star.sheet.addin.Analysis.getBesselj
BESSELK | com.sun.star.sheet.addin.Analysis.getBesselk
BESSELY | com.sun.star.sheet.addin.Analysis.getBessely
BIN2DEC | com.sun.star.sheet.addin.Analysis.getBin2Dec
BIN2HEX | com.sun.star.sheet.addin.Analysis.getBin2Hex
BIN2OCT | com.sun.star.sheet.addin.Analysis.getBin2Oct
COMPLEX | com.sun.star.sheet.addin.Analysis.getComplex
CONVERT | com.sun.star.sheet.addin.Analysis.getConvert
COUPDAYBS | com.sun.star.sheet.addin.Analysis.getCoupdaybs
COUPDAYS | com.sun.star.sheet.addin.Analysis.getCoupdays
COUPDAYSNC | com.sun.star.sheet.addin.Analysis.getCoupdaysnc
COUPNCD | com.sun.star.sheet.addin.Analysis.getCoupncd
COUPNUM | com.sun.star.sheet.addin.Analysis.getCoupnum
COUPPCD | com.sun.star.sheet.addin.Analysis.getCouppcd
CUMIPMT | com.sun.star.sheet.addin.Analysis.getCumipmt
CUMPRINC | com.sun.star.sheet.addin.Analysis.getCumprinc
DEC2BIN | com.sun.star.sheet.addin.Analysis.getDec2Bin
DEC2HEX | com.sun.star.sheet.addin.Analysis.getDec2Hex
DEC2OCT | com.sun.star.sheet.addin.Analysis.getDec2Oct
DELTA | com.sun.star.sheet.addin.Analysis.getDelta
DISC | com.sun.star.sheet.addin.Analysis.getDisc
DOLLARDE | com.sun.star.sheet.addin.Analysis.getDollarde
DOLLARFR | com.sun.star.sheet.addin.Analysis.getDollarfr
DURATION | com.sun.star.sheet.addin.Analysis.getDuration
EDATE | com.sun.star.sheet.addin.Analysis.getEdate
EFFECT | com.sun.star.sheet.addin.Analysis.getEffect
EOMONTH | com.sun.star.sheet.addin.Analysis.getEomonth
ERF | com.sun.star.sheet.addin.Analysis.getErf
ERFC | com.sun.star.sheet.addin.Analysis.getErfc
FACTDOUBLE | com.sun.star.sheet.addin.Analysis.getFactdouble
FVSCHEDULE | com.sun.star.sheet.addin.Analysis.getFvschedule
GCD | com.sun.star.sheet.addin.Analysis.getGcd
GESTEP | com.sun.star.sheet.addin.Analysis.getGestep
HEX2BIN | com.sun.star.sheet.addin.Analysis.getHex2Bin
HEX2DEC | com.sun.star.sheet.addin.Analysis.getHex2Dec
HEX2OCT | com.sun.star.sheet.addin.Analysis.getHex2Oct
IMABS | com.sun.star.sheet.addin.Analysis.getImabs
IMAGINARY | com.sun.star.sheet.addin.Analysis.getImaginary
IMARGUMENT | com.sun.star.sheet.addin.Analysis.getImargument
IMCONJUGATE | com.sun.star.sheet.addin.Analysis.getImconjugate
IMCOS | com.sun.star.sheet.addin.Analysis.getImcos
IMCOSH | com.sun.star.sheet.addin.Analysis.getImcosh
IMCOT | com.sun.star.sheet.addin.Analysis.getImcot
IMCSC | com.sun.star.sheet.addin.Analysis.getImcsc
IMCSCH | com.sun.star.sheet.addin.Analysis.getImcsch
IMDIV | com.sun.star.sheet.addin.Analysis.getImdiv
IMEXP | com.sun.star.sheet.addin.Analysis.getImexp
IMLN | com.sun.star.sheet.addin.Analysis.getImln
IMLOG10 | com.sun.star.sheet.addin.Analysis.getImlog10
IMLOG2 | com.sun.star.sheet.addin.Analysis.getImlog2
IMPOWER | com.sun.star.sheet.addin.Analysis.getImpower
IMPRODUCT | com.sun.star.sheet.addin.Analysis.getImproduct
IMREAL | com.sun.star.sheet.addin.Analysis.getImreal
IMSEC | com.sun.star.sheet.addin.Analysis.getImsec
IMSECH | com.sun.star.sheet.addin.Analysis.getImsech
IMSIN | com.sun.star.sheet.addin.Analysis.getImsin
IMSINH | com.sun.star.sheet.addin.Analysis.getImsinh
IMSQRT | com.sun.star.sheet.addin.Analysis.getImsqrt
IMSUB | com.sun.star.sheet.addin.Analysis.getImsub
IMSUM | com.sun.star.sheet.addin.Analysis.getImsum
IMTAN | com.sun.star.sheet.addin.Analysis.getImtan
INTRATE | com.sun.star.sheet.addin.Analysis.getIntrate
ISEVEN | com.sun.star.sheet.addin.Analysis.getIseven
ISODD | com.sun.star.sheet.addin.Analysis.getIsodd
LCM | com.sun.star.sheet.addin.Analysis.getLcm
MDURATION | com.sun.star.sheet.addin.Analysis.getMduration
MROUND | com.sun.star.sheet.addin.Analysis.getMround
MULTINOMIAL | com.sun.star.sheet.addin.Analysis.getMultinomial
NETWORKDAYS | com.sun.star.sheet.addin.Analysis.getNetworkdays
NOMINAL | com.sun.star.sheet.addin.Analysis.getNominal
OCT2BIN | com.sun.star.sheet.addin.Analysis.getOct2Bin
OCT2DEC | com.sun.star.sheet.addin.Analysis.getOct2Dec
OCT2HEX | com.sun.star.sheet.addin.Analysis.getOct2Hex
ODDFPRICE | com.sun.star.sheet.addin.Analysis.getOddfprice
ODDFYIELD | com.sun.star.sheet.addin.Analysis.getOddfyield
ODDLPRICE | com.sun.star.sheet.addin.Analysis.getOddlprice
ODDLYIELD | com.sun.star.sheet.addin.Analysis.getOddlyield
PRICE | com.sun.star.sheet.addin.Analysis.getPrice
PRICEDISC | com.sun.star.sheet.addin.Analysis.getPricedisc
PRICEMAT | com.sun.star.sheet.addin.Analysis.getPricemat
QUOTIENT | com.sun.star.sheet.addin.Analysis.getQuotient
RANDBETWEEN | com.sun.star.sheet.addin.Analysis.getRandbetween
RECEIVED | com.sun.star.sheet.addin.Analysis.getReceived
SERIESSUM | com.sun.star.sheet.addin.Analysis.getSeriessum
SQRTPI | com.sun.star.sheet.addin.Analysis.getSqrtpi
TBILLEQ | com.sun.star.sheet.addin.Analysis.getTbilleq
TBILLPRICE | com.sun.star.sheet.addin.Analysis.getTbillprice
TBILLYIELD | com.sun.star.sheet.addin.Analysis.getTbillyield
WEEKNUM | com.sun.star.sheet.addin.Analysis.getWeeknum
WORKDAY | com.sun.star.sheet.addin.Analysis.getWorkday
XIRR | com.sun.star.sheet.addin.Analysis.getXirr
XNPV | com.sun.star.sheet.addin.Analysis.getXnpv
YEARFRAC | com.sun.star.sheet.addin.Analysis.getYearfrac
YIELD | com.sun.star.sheet.addin.Analysis.getYield
YIELDDISC | com.sun.star.sheet.addin.Analysis.getYielddisc
YIELDMAT | com.sun.star.sheet.addin.Analysis.getYieldmat

## Noms de service UNO pour les fonctions de complément de date

Le tableau ci-dessous présente une liste de toutes les fonctions du complément Calc Date et leurs noms de service UNO respectifs.

Nom de la fonction Calc | Nom du service UNO
--- | ---
JOURSDANSMOIS | com.sun.star.sheet.addin.DateFunctions.getDaysInMonth
JOURSDANSANNEE | com.sun.star.sheet.addin.DateFunctions.getDaysInMonth
NB.MOIS | com.sun.star.sheet.addin.DateFunctions.getDiffMonths
SEMAINES | com.sun.star.sheet.addin.DateFunctions.getDiffWeeks
ANNEES | com.sun.star.sheet.addin.DateFunctions.getDiffYears
ROT13 | com.sun.star.sheet.addin.DateFunctions.getRot13
SEMAINESDANSANNEE | com.sun.star.sheet.addin.DateFunctions.getWeeksInYear

## Noms de service UNO pour les fonctions complémentaires de tarification

Le tableau ci-dessous présente une liste de toutes les fonctions de Calc Pricing Add-In et leurs noms de service UNO respectifs.

Nom de la fonction Calc | Nom du service UNO
--- | ---
OPT_BARRIER | com.sun.star.sheet.addin.PrincingFunctions.getOptBarrier
OPT_PROB_HIT | com.sun.star.sheet.addin.PrincingFunctions.getOptProbHit
OPT_PROB_INMONEY | com.sun.star.sheet.addin.PrincingFunctions.getOptProbInMoney
OPT_TOUCH | com.sun.star.sheet.addin.PrincingFunctions.getOptTouch

Rubriques connexes

Fonction CreateUnoService