Developpez.com - Développement Web
X

Choisissez d'abord la catégorieensuite la rubrique :


Cours de VBScript

Réalisation : Van Lancker Luc

Bref préambule

Après le Html et le Javascript, il était logique de s'intéresser à cet autre langage de script qu'est le VBscript.

Plutôt qu'un long tutorial, ce chapitre consacré au VBscript est surtout à considérer comme un tour d'horizon des possibilités de Vbscript.

Bien que la tentation fut grande, j'ai évité de faire de ce qui suit, un match Javascript contre VBscript ou même Netscape contre Microsoft. D'autres s'en chargent...

Le VBscript

VBscript est un langage de scripts qui incorporé aux balises html permet d'améliorer la présentation et l'interactivité des pages Web.

VBscript est donc une extension du code Html des pages Web. Les scripts sont en quelque sorte des ajoutes au code Html.

Ces scripts vont être interprétés et exécutés par le navigateur (donc côté client) sans devoir faire appel aux ressources du serveur.

VBscript (pour Microsoft Visual Basic Scripting Edition) a été développé par Microsoft qui a repris la logique et la syntaxe de son Visual Basic (d'où le VB). Bien que quelques fonctions lui soient propres, on peut considérer VBscript comme un sous-ensemble de Visual Basic.

Pour l'instant, les seuls browsers qui reconnaissent le VBscript sont les navigateurs de la firme Microsoft, soit Internet Explorer.

VBscript ouvre la porte aux différents produits de Microsoft dédiés au Web et principalement aux ActiveX et autres ASP. Ce qui peut être particulièrement adapté dans le cas d'un réseau Intranet.

Dans l'inévitable compétition avec cet autre langage de script qu'est Javascript, l'avenir de VBscript dépendra en grande partie des autres navigateurs qui adopteront les routines VBscript. Vous pensez du côté de Netscape ? Moi aussi !

VBscript ou Javascript

Pour le moins qu'on puisse dire, VBscript et Javascript sont très semblables quant à leur philosophie et leur mode de fonctionnement. Heureusement quelques différences, et non des moindres, en font deux outils totalement différents.

--- VBscript et Javascript ---
Code intégré aux balises Html
Code interprété par le browser à l'exécution
Permet d'accéder aux objets de la page et du browser
Confidentialité des scripts nulle car le code source est visible
Codes de programmation simples mais pour des applications limitées (sauf appel aux ActiveX pour VBscript)

--- VBscript ------ Javascript ---
Code d'inspiration Visual Basic Code d'inspiration C et C++
Microsoft Explorer seulement ! Famille Netscape et Explorer
Sans appel aux ActiveX, VBscript semble moins élaboré que Javascript Apparaît plus autonome que VBscript

Même sans comprendre (à ce stade de cette introduction) les scripts, il peut être intéressant de comparer deux scripts identiques en VBscript et Javascript.

--- VBscript ------ Javascript ---
<HTML>
<HEAD>
<SCRIPT language="VBscript"> <!-- Sub ok_OnClick MsgBox "Le bouton est cliqué." End Sub --> </SCRIPT>
</HEAD> <BODY> <FORM name="commande"> <INPUT name="ok" type="button" value="Cliquez ici"> </FORM> </BODY> </HTML>
<HTML>
<HEAD>
<SCRIPT language="Javascript"> <!-- function clickbut(){ alert("Le bouton est cliqué.") } //-->> </SCRIPT>
</HEAD> <BODY> <FORM name="commande"> <INPUT name="ok" type="button" value="Cliquez ici" onClick="clickbut()"> </FORM> </BODY> </HTML>

VBscript et Javascript sont donc assez semblables. Ils diffèrent surtout par le langage dont ils sont dérivés, soit Visual Basic pour le VBscript et le langage C et C++ pour le Javascript.

Pour terminer, je voudrais ajouter qui si VBscript ressemble à du Javascript, il n'est en rien comparable à du Java. Cette confusion entre Javascript et Java est assez classique. En deux mots, Java est un langage du programmation à part entière, il forme un module (applet) distinct de la page Html et son code source est compilé avant son exécution.

VBscript et ActiveX

Comme pour l'utilisateur le résultat final est identique, on serait tenté de dire que ActiveX est à VBscript ce que les applets Java sont à Javascript. Mais ceci est une approche trop simpliste car le concept d'ActiveX est une technologie sensiblement différente.

ActiveX est une plate-forme d'intégration ouverte qui fournit aux développeurs, aux utilisateurs et aux réalisateurs de Web le moyen le plus rapide et le plus facile de créer de nouvelles applications et de nouveaux contenus pour Internet et pour les Intranets."

Microsoft présente donc son produit ActiveX comme un outil d'intégration de technologies permettant de créer des pages interactives sur le Web. L'idée de départ à été de profiter de l'expérience de Microsoft en matière de partage entre diverses applications (la technologie des Dll, Ole et autres VBX) pour la transposer sur le Web en recréant un tout un environnement dédié (au départ) à Windows.

Les contrôles ActiveX peuvent être écrits dans différents langages de programmation comme le C, le C++, Pascal (Delphi), Visual Basic 5 ou Microsoft Visual J++. Ainsi, au contraire d'un langage de script comme VBscript, on évolue ici dans le monde de la programmation ce qui ne rend pas les choses particulièrement simples.

L'appel à ses composants ActiveX est inséré dans une page Web par une combinaison de Html et de VBscript et spécialement par la balise <OBJECT> ... </OBJET> qui comprend de nombreux attributs. Nous y reviendrons plus loin dans cette introduction à VBscript sur l'incorporation des contrôles ActiveX dans vos pages Html.

Lorsque Internet Explorer rencontre un appel à un contrôle ActiveX, celui-ci, situé initialement sur un serveur, explore votre machine [je n'aime pas trop ...] pour voir si le contrôle n'est pas déjà présent. Si le contrôle est absent ou d'une version plus ancienne, tous les fichiers nécessaires seront téléchargés et copiés sur votre disque dur [je n'aime pas trop ...]. Et à la différence des applets Java, les composants ActiveX resteront sur le disque dur de l'utilisateur et feront partie intégrante de son environnement Windows [je n'aime pas trop ...].

Vous aurez deviné que ce fonctionnement peut poser des problèmes de sécurité. Microsoft utilise un système de source "sûre" ou "d'autorité certifiée" (Certificate Authority). Chaque composant est en quelque manière "signé" de manière à garantir son origine. De toute façon, Internet Explorer vous demande si vous acceptez les composants provenant de cette source.

Dans la pratique, l'utilisateur moyen ou tout simplement prudent d'Internet rechignera à laisser librement installer des composants sur sa machine. En reprenant mot à mot un extrait d'une documentation de Microsoft : "Avec Internet, en revanche, les utilisateurs reçoivent généralement votre composant comme un effet de l'exploration et ne feront fonctionner aucun programme d'installation". Tout ceci rejoint notre opinion que le tandem VBscript et ActiveX est, pour l'instant du moins, plutôt une solution pour Intranet que pour Internet.

Terminons en signalant que si VBscript n'est pas accepté par Netscape, les contrôles ActiveX par contre peuvent être lus par Netscape par l'entremise d'un plug-in fourni par Microsoft.

Les outils pour VBscript

Pour apprendre et utiliser le VBscript, il vous faut :

  1. un browser qui reconnaît le VBscript
  2. une solide connaissance du Html
  3. un simple éditeur de texte

Un browser compatible VBscript

Le choix est limité aux seuls browsers de la firme Microsoft. Ce sera soit Microsoft Internet Explorer 3, soit Microsoft Internet Explorer 4 et aucun autre !

Pour les accros des versions :
- Microsoft Explorer 3.0 utilise VBscript Version 1.0
- Microsoft Explorer 4.0 utilise VBscript Version 3.0

Une solide connaissance du Html

VBscript ne remplace pas le langage Html. Au contraire, comme VBscript vient s'ajouter aux codes Html, une connaissance approfondie des balises et tags Html est souhaitable sinon indispensable. Les utilisateurs assidus des éditeurs Html "wysiwyg" risquent de devoir retourner à leurs chères études.

Je ne peux que vous recommander le tutorial : "Le point sur les balises HTML".

Un simple éditeur de texte

Une page Html n'est que du texte. Le code VBscript n'est lui aussi que du texte. Quoi de plus simple que d'utiliser un éditeur de ... texte. Le bloc-notes de Windows, fera parfaitement l'affaire (vous resterez ainsi dans la famille Microsoft).

Un éditeur Html de la première génération (un bon vieil éditeur qui n'est pas whsiwyg et qui fait apparaître les balises) fait également bien l'affaire.

Un peu de théorie objet

Les objets et leur hiérarchie

En bon internaute, vous voyez sur votre écran une page Web. VBscript va diviser cette page en objets et surtout va vous permettre d'accéder à ces objets, d'en retirer des informations et de les manipuler.

Voyons d'abord une illustration des différents objets qu'une page peut contenir.

Vous avez chargé la page suivante :

Dans votre browser, il y a une page Web qui n'est rien d'autre qu'un document Html. C'est l'objet document.

Dans ce document, on trouve un formulaire au sens Html du terme. C'est l'objet formulaire. Autrement dit (et c'est là que l'on voit apparaître la notion de la hiérarchie des objets VBscript), l'objet document contient un objet formulaire.

Dans ce document, on trouve deux objets. Des boutons checkbox et une zone de texte. Ce sont respectivement l'objet checkbox et l'objet texte. Autrement dit l'objet document contient l'objet formulaire qui contient à son tour l'objet radio et l'objet document contient aussi l'objet formulaire qui contient à son tour l'objet texte.

La hiérarchie des objets de cet exemple est donc :

document formulaire checkbox
texte

Pour accéder à un objet (vous l'avez peut-être déjà deviné), il faudra donner le chemin complet de l'objet (ou la généalogie complète de l'objet) en allant du contenant le plus extérieur à l'objet à l'objet référencé. Soit par exemple pour le bouton checkbox : document.formulaire.checkbox ou pour la zone de texte document.formulaire.texte.

Le VBscript minimum

La balise <SCRIPT>

Le langage Html utilise des balises pour "dire" au navigateur d'afficher du texte en gras, des images, des liens, etc. Dans la logique du Html, il faut donc signaler au browser par un tag que ce qui suit est un script et que c'est du VBscript (et non du Javascript). C'est la balise <SCRIPT language="VBscript">. De même, il faudra informer le browser de la fin du script. C'est la balise </SCRIPT>.

Les commentaires

Il vous sera peut-être utile d'inclure de commentaires personnels dans vos codes VBscript. VBscript utilise les conventions de Visual Basic, soit :

' commentaires
ou
Rem commentaires
Tout ce qui est écrit après l'apostrophe ou le mot clé Rem sera ignoré.

Masquer le script pour les autres browsers

Les browsers qui ignorent la balise <script>, vont afficher le code VBscript comme du texte. Pour éviter l'affichage de ce charabia, on utilise les balises de commentaire du Html soit <!-- et -->.

Votre premier VBscript ressemblera à ceci :

<SCRIPT language="VBscript"> <!-- ... code VBscript ... --> </SCRIPT>

Où inclure la balise de script

Le browser traite votre page Html, y compris vos ajoutes en VBscript de haut en bas. Toute instruction ne pourra être exécutée que si le browser possède à ce moment précis tous les éléments nécessaire à son exécution. Au moment de l'exécution. La balise de script apparaît alors à l'intérieur des tags <BODY> </BODY>. Pour s'assurer que le programme VBscript est bien chargé et prêt à fonctionner à toute intervention de votre visiteur, on prendra l'habitude de déclarer systématiquement (lorsque cela sera possible) un maximum d'éléments dans les balises d'en-tête soit entre <HEAD> et </HEAD> et avant la balise <BODY>. Ce sera le cas par exemple pour les procédures ou fonctions. Dans certains cas, la balise de script ne devra même pas être utilisée. Ce sera le cas pour les ajouts de script dans les contrôles de formulaire. Nous y reviendrons plus tard. Rien n'interdit d'inclure plusieurs scripts dans la même page Html.

Attention : VBscript est case sensitive. Ainsi il faudra écrire write et non Write. Pour l'écriture des instructions VBscript, on utilisera l'alphabet ASCII classique (à 128 caractères) comme en Html. Les caractères accentués comme é ou à ne peuvent être employés que dans les chaînes de caractères c.-à-d. dans votre texte de notre exemple.

Votre première page Html avec du VBscript

<HTML>
<HEAD>
</HEAD>
<BODY>
... Html normal ...
<SCRIPT language="VBscript"> <!-- MsgBox "Mon premier VBscript!" --> </SCRIPT>
... Suite en Html ... </BODY> </HTML>

Les boites de message

La boite de message - MsgBox -

Petite boite d'un usage simple mais au combien utile. Cette boite affiche votre message et reste à l'écran aussi longtemps que le lecteur ne clique sur le bouton OK pour confirmer la bonne réception du message.

La syntaxe est de plus simple :

MsgBox "votre texte"

Voici un exemple :

MsgBox "Message reçu ?"

Cette boite de message sera souvent utilisée pour corriger les scripts présentant des erreurs. Ainsi, MsgBox variable, affichera le contenu de la variable à cet endroit du script ou MsgBox "jusqu'ici", vous permettra de voir jusqu'où se déroule le script erroné. Nous y reviendrons dans le chapitre intitulé "Les messages d'erreurs".

Vous pouvez aussi afficher du texte sur plusieurs lignes. Pour se faire, il suffit d'employer le mot-clé vbCrLf ou Chr (13) ou Chr (13) & Chr (10).

Ainsi

MsgBox "Ligne 1" & vbCrLf & "Ligne 2" & Chr(13) & "Ligne 3"
affichera dans la boite de message :
Ligne 1 Ligne 2 Ligne 3

La boite de message - Alert -

Assurément un emprunt au Javascript, la fonction Alert permet également d'afficher un boite de message. Tout comme MsgBox, Alert ouvre une petite fenêtre avec votre texte et un bouton OK. Aussi longtemps que le lecteur n'aura pas confirmé par un clic sur ce bouton, le processus sera bloqué.

La syntaxe est :

Alert "votre texte"

Un exemple ?

Alert "Message reçu ?"

Votre oeil perspicace aura remarqué que la fenêtre s'intitule "Microsoft Internet Explorer" ou lieu de Visual Basic. A mon sens, plus joli.

La boite de saisie - InputBox -

Avec la boite de saisie, vous pouvez accroître l'interactivité avec votre lecteur et obtenir de sa part d'autres réponses que oui, non, etc.

La syntaxe est simple :

InputBox "votre texte" , "le titre de la boite" , "la valeur par défaut"

Voici un exemple :

InputBox "Quel est votre prénom?", "Demande d'information", "Luc"

La boite de saisie ne comporte pas d'icônes et les seuls boutons sont OK et Cancel. La valeur ainsi entrée par le lecteur pourra être récupérée dans une variable qui sera traitée dans d'autres lignes de code VBscript.

La boite de message - MsgBox - évoluée

On peut utiliser la boite MsgBox pour une plus grande interactivité qu'un simple (stupide?) bouton de confirmation. C'est le premier attribut (attribut-bouton), celui du choix des boutons.

Constante Bouton(s) affiché(s)
vbOk OK seulement (par défaut)
vbOkCancel OK et Cancel
vbAbortRetryIgnore Abort, Retry et Ignore
vbYesNoCancel Yes, No et Cancel
vbYesNo Yes et No
vbRetryCancel Retry et Cancel

On peut modifier la petite icône qui accompagne la boite de message. C'est l'attribut-icône.

Constante Icône affichée
vbCritical un X (pour erreur fatale)
vbQuestion un point d'interrogation (pour une question)
vbExclamation un point d'exclamation (pour une remarque)
vbInformation un I (pour une information)

Et si la mention "Visual Basic" de la fenêtre par défaut ne vous enchante guère, le titre de cette fenêtre peut aussi être modifié.

La syntaxe bien entendu, évolue :

MsgBox "votre texte" , attribut-bouton + attribut-icône, "titre de la fenêtre"

MsgBox renvoie une valeur de retour qui indique que le lecteur a cliqué sur tel ou tel bouton. Selon l'évaluation de ce code retour (voir Chapitre "Les conditions") telle ou telle action pourra être programmée. Ces codes sont 1 pour le bouton OK, 2 pour le bouton Cancel, 3 pour le bouton Abort, 4 pour le bouton Retry, 5 pour le bouton Ignore, 6 pour le bouton Yes et enfin 7 pour le bouton No.

On mettra ce code retour dans une variable (ici code). L'écriture prendra la forme :

Dim code
code = MsgBox("texte" , attribut-bouton )

Afficher du texte

Méthode de l'objet document

Rappelez-vous... Nous avions montré que ce qui apparaît sur votre écran, peut être "découpé" en objets et que VBscript allait vous donner la possibilité d'accéder à ces objets.

La page Html qui s'affiche dans la fenêtre du browser est un objet de type document. A chaque objet VBscript, le concepteur du langage a prévu un ensemble de méthodes (ou fonctions dédiées à cet objet) qui lui sont propres. A l'objet document, VBscript a dédié la méthode "écrire dans le document", c'est la méthode write.

Pour appeler la méthode write du document, on notera

document.write

La méthode write

La syntaxe est assez simple soit

document.write "votre texte"

On peut aussi écrire une variable, soit la variable resultat,

document.write resultat

Pour associer du texte (chaînes de caractères) et des variables, on utilise l'instruction

document.write ''Le résultat est " & resultat

On peut utiliser les balises Html pour agrémenter ce texte

document.write ''Le résultat est" & resultat
document.write ''" & "Le résultat est "& "" & resultat
où & est un opérateur de concaténation qui relie les "wagons" de ce que vous voulez écrire. Nous y reviendrons au chapitre consacré aux opérateurs.

Exemple (classique !)

On va écrire du texte en Html et en VBscript.

<HTML>
<BODY>
<H1>Ceci est du Html</H1>
<SCRIPT language="VBscript"> <!-- document.write "<H1>Et ceci du VBscript</H1>" --> </SCRIPT>
</BODY> </HTML>

Ce qui donnera comme résultat :

Les variables

Les variables contiennent des données qui peuvent être modifiées lors de l'exécution d'un programme. On y fait référence par le nom de cette variable.

Les noms de variables

Ils ne doivent pas dépasser 255 caractères, doivent commencer par une lettre (caractère alphabétique), ne peuvent contenir une virgule, un point ou un espace, ne peuvent reprendre des mots clés de VBscript, doivent être uniques à l'intérieur de leur portée (voir variables globales et locales).

Ajoutons pour nous les francophones, qu'il faut employer l'alphabet ASCII donc les lettres sans accents.

Pour rappel VBscript est sensible à la case. Attention donc aux majuscules et minuscules!

La déclaration de variable

Les variables peuvent se déclarer de deux façons :

soit de façon explicite. On dit à VBscript que ceci est une variable. La commande qui permet de déclarer une variable est le mot clé Dim suivi du nom de la variable (et ce généralement en début de script). Par exemple :

Dim Numero
Dim x, y, z

soit de façon implicite. On écrit directement dans le code VBscript, le nom de la variable suivi de la valeur que l'on lui attribue et VBscript s'en accommode. Par exemple

Numero = 1
Prenom = "Luc"
Si ce mélange possible de variables implicites et explicites vous ennuie, vous pouvez exiger la méthode de déclaration explicite et empêcher les déclarations implicites. Cela se réalise par la commande
Option Explicit

Cette commande se place dans la première ligne de code de votre VBscript :

<SCRIPT language="VBscript> <!-- Option Explicit ... la suite du code ... --> </SCRIPT>

Les types de données sous VBscript

VBscript utilise un seul type de données nommée Variant (rappel du Visual Basic). Ce type Variant est véritablement un fourre-tout de différents types d'information. En voici quelques-uns :

Type Description
Des nombres Tout nombre entier ou avec virgule tel que 22 ou 3.1416
Des chaînes de caractères Toute suite de caractères alphanumérique comprise entre guillemets telle que "suite de caractères". On emploiera aussi le terme "strings".
Des Booléens Contient True (vrai) ou False (faux).
Empty La variable n'a pas encore été initialisée. Sa valeur est égale à 0 pour les variables numériques et " " pour les strings.
Null Contient (intentionnellement) des données incorrectes.
Error Contient un numéro d'erreur. Utile pour corriger un script (voir chapitre les messages d'erreur).

Variables locales et variables globales

Les variables déclarées dans les procédures (voir plus loin) ont une portée dite locale c-à-d qu'elle ne sera valable que dans le cadre de cette seule procédure.

Une variable est dite globale lorsqu'elle pourra être partagée partout dans le code du script. Pour qu'une variable soit globale, elle doit être déclarée en dehors de toutes procédures. Pour ce faire, on les déclare tout au début du script.

Ainsi, la variable compteur définie comme suit sera globale :

<SCRIPT language="VBscript"> <!-- Dim compteur Sub .... compteur = 0 End Sub Sub ... compteur = compteur + 1 End Sub --> </SCRIPT>

Les opérateurs

Après les variables, abordons le chapitre, toujours follement passionnant (sic), des opérateurs.

Les opérateurs arithmétiques

Dans tous les exemples, y est égal à 11.

0pérateur Signification Exemple Résultat
+ Addition x = y + 5 x = 16
- Soustraction x = y - 5 x = 6
* Multiplication x = y * 5 x = 55
/ Division à virgule flottante x = y / 5 x = 2.2
\ Division sans décimale x = y \ 5 x = 2
^ Exposant x = y ^2 x = 121
Mod Modulo x = y Mod 5 x = 1
- Négation x = -y x = -11

Il faut noter que la division sans décimale renvoie la partie entière de la division et ne fonctionne en aucun cas comme un arrondi du nombre.

Opérateurs de comparaison

Ces opérateurs de comparaison seront surtout utilisés dans les tests de conditionnels. Nous y reviendrons dans le chapitre intitulé "Les conditions".

0pérateur Signification Exemple Résultat
= Egalité a = b a est égal à b
<> Inégalité a <> b a différent à b
> Plus grand a > b a supérieur à b
< Plus petit a < b a inférieur à b
>= Plus grand ou égal a >= b a plus grand ou égal à b
<= Plus petit ou égal a <= b a inférieur à b
Is Equivalence d'objets objet.ref1 Is objet.ref2

En VBscript, il n'y a pas de signe différent pour = valeur d'attribution et = comparaison. C'est le sens du script qui l'indique. Ce qui peut poser certains problèmes. En Javascript, on a = pour la valeur d'attribution et == comparaison.

Opérateurs logiques

0pérateur Signification Exemple
And Conjonction (et) condition1 And condition2
Or Disjonction (ou) condition1 Or condition2
Not Négation Not expression
Xor Exclusion condition1 Xor condition2
Eqv Equivalence logique condition1 Eqv condition2
Imp Implication condition1 Imp condition2

Opérateur de concaténation

0pérateur Signification Exemple Résultat
& Concaténation de strings "nom" & " " & "prénom" nom prénom
+ Concaténation de strings "nom" + " " + "prénom" nom prénom

Préférez cependant & à + car ce dernier est fait pour les valeurs numériques et l'interpréteur être troublé par la concaténation de nombres et de strings. La concaténation avec l'opérateur +, ne fournit pas toujours un résultat garanti.

Les procédures

Les procédures (généralités)

Une procédure (ou fonction) est un groupe de ligne(s) de code de programmation destiné à exécuter une tâche bien spécifique et que l'on pourra, si besoin est, utiliser à plusieurs reprises. De plus, l'usage des procédures améliorera grandement la lisibilité et la maintenance de votre script.

En VBscript, il existe trois types de fonctions ou de procédures :

  • les fonctions propres à Javascript. On les appelle des "méthodes". Elles sont associées à un objet bien particulier comme c'était le cas de la méthode MsgBox avec l'objet document.
  • les sous-programmes (Subroutine) écrits par vous-même pour les besoins de votre script et qui ne retournent pas de valeur.
  • les fonctions (Function) proprement dites qui sont aussi écrites par vous-même mais qui peuvent retourner une valeur.

Déclaration d'un sous-programme

Pour déclarer ou définir un sous-programme (Subroutine), on utilise le mot (réservé) Sub. La syntaxe d'une déclaration de sous-routine est la suivante :

Sub nom-du-sous-programme(arguments)
... code des instructions ...
End Sub

Le nom du sous-programme suit les mêmes règles que celles qui régissent le nom de variables (nombre de caractères 255, commencer par une lettre, peuvent inclure des chiffres...). Pour rappel, VBscript est sensible à la case. Ainsi Calcul() ne sera pas égal à calcul(). En outre, Tous les noms des fonctions dans un script doivent être uniques.

La mention des arguments est facultative mais dans ce cas les parenthèses doivent rester. C'est d'ailleurs grâce à ces parenthèses que l'interpréteur VBscript distingue les variables des fonctions. Nous reviendrons plus en détail sur les arguments et autres paramètres.

Lorsqu'un sous-programme a été ouvert par un Sub, il doit impérativement, sous peine de message d'erreur, être refermé par un End Sub. Prenez la bonne habitude de fermer directement vos sous-routines et d'écrire votre code entre elles.

Le fait de définir une fonction n'entraîne pas l'exécution des commandes qui la composent. Ce n'est que lors de l'appel de la fonction que le code de programme est exécuté.

L'appel d'un sous-programme

L'appel d'un sous-programme se fait le plus simplement du monde par le nom du sous-programme (sans les parenthèses même s'il y a des arguments).

Soit par exemple

nom-du-sous-programme
nom-du-sous-programme argument1, argument2

Vous pouvez aussi (mais ce n'est pas obligatoire) utiliser l'instruction call

Call nom-du_sous-programme
Call nom-du-sous-programme(argument1, argument2)

Si le sous-programme a des arguments, il faut ici mettre des parenthèses.

Il faudra veuillez en toute logique (car l'interpréteur lit votre script de haut vers le bas) que votre fonction soit bien définie avant d'être appelée.

Déclaration d'une fonction

Pour rappel, la fonction retourne une valeur. Pour le reste, les règles sont assez proche de celles vues pour les sous-programmes.

Pour déclarer ou définir une fonction, on utilise le mot clé Function . La syntaxe d'une déclaration de fonction est la suivante :

Function nom-de-la-fonction(arguments)
... code des instructions ...
End Function

Ce qui été dit pour les sous-programmes concernant le nom, l'usage des parenthèses, L'emploi de End Function reste valable pour les fonctions.

Le fait de définir une fonction n'entraîne pas l'exécution des commandes qui la composent. Ce n'est que lors de l'appel de la fonction que le code de programme est exécuté.

Retour de la valeur dans une fonction

Pour retourner une valeur, la fonction utilise un petit artifice. On affectera la valeur à une variable dans une des lignes de code de la fonction et cette variable portera le même nom que la fonction. Ainsi, la syntaxe serait :

Function nom-de-la-fonction(arguments)
... code des instructions ...
nom-de-la-fonction = expression
... code des instructions ...
End Function

Vbscript sait alors automatiquement que vous voulez renvoyer la valeur de la "variable" nom-de-la-fonction au programme qui l'a appelé. Cette façon de faire remplace le return d'autres langages de programmation ou de scripts.

Voici un exemple :

Dim cube Function cube(nombre) cube = nombre*nombre*nombre End Function
La valeur retournée sera celle de "cube" soit nombre au cube.

Appel d'une fonction

Pour appeler une fonction, on fait apparaître le nom de la fonction à droite d'une affectation de variable souvent appelée variable de retour. La syntaxe est :

variable-retour = nom-de-la-fonction(arguments)

Dans le cadre de notre exemple, cela pourrait être :

resultat = cube(nombre)

Les parenthèses sont optionnelles même si on transmet des arguments à la fonction.

Responsable bénévole de la rubrique Développement Web : Xavier Lecomte -