# Appels de fonctions VBScript à partir du script

On peut appeler les fonctions VBScript ou JScript définies dans le module de macros d'un document QlikView à partir du script. Lorsqu'une fonction appelée n'est pas reconnue comme une fonction de script standard, le programme regarde si une fonction personnalisée se trouve dans le module. Cela vous laisse une grande liberté pour définir vos propres fonctions. Utiliser des fonctions de macros personnalisées sera bien sûr un peu plus lent que l'exécution des fonctions standard.

`Rem` `rem ***THIS IS VBSCRIPT CODE FROM THE MODULE*********` `rem**************************************************` `rem ********* Global variables ********************` `dim flag` `rem *******functions accessible from script *********` `rem ************ wrap for input box ******************` `function VBin(prompt)` `VBin=inputbox(prompt)` `end function` ` ` `rem ************ clear global flag ******************` `function VBclearFlag()` `flag=0` `end function` `rem ********* test if reference has passed ***********` `function VBrelPos(Ref, Current)` `if Ref=Current then` `VBRelPos="Reference"` `flag=1` `elseif flag=0 then` `VBRelPos="Before "&Ref&" in table"` `else` `VBRelPos="After "&Ref&" in table"` `end if` `end function` `// **************************************************` `// *************THIS IS THE SCRIPT *****************` `// *************************************************` ` ` `let MaxPop=VBin('Max population in millions :');` `// Ask limit` ` ` `let RefCountry=VBin('Reference country :');` ` // Ask ref.  ` ` ` `let dummy=VBclearFlag(); // Clears the global flag` ` ` `Load` `Country,recno(),` `Capital,` `"Area(km.sq)",` `"Population(mio)",` `VBrelPos('$(RefCountry)',Country)` `as RelativePos` `from country1.csv` `(ansi, txt, delimiter is ',', embedded labels)` `where "Population(mio)" <= $(MaxPop);`

## Transfert de paramètres

Les règles suivantes s'appliquent au transfert de paramètres entre le script de chargement et VBScript :

* Les paramètres manquants sont considérés comme NULL.
* Si l'expression réelle donne un nombre valide, c'est ce nombre qui est fourni ; dans le cas contraire, si elle donne une chaîne valide, c'est la chaîne qui est fournie ; sinon, c'est NULL.
* NULL est transmis sous la forme VT\_EMPTY.
* Les valeurs renvoyées sont traitées normalement.