IV - Le langage VBScript

 

Dans ce chapitre nous allons présenter le langage VBScript. Il est important de remarquer que ce langage peut être utilisé indépendamment d'ActiveX, de même que la technologie ActiveX peut être exploitée sans VBScript. Cependant, vu que la présente étude porte en particulier sur l'utilisation de la technologie ActiveX dans le cadre du web, il paraît tout à fait intéressant de présenter VBScript (VBS).

 

1. Présentation

VBS est un langage de type script, interprété par un navigateur (typiquement MSIE), dérivé de Visual Basic. On débute un script VBS grâce à l'emploi d'une balise <SCRIPT> dans une page web. Cette balise admet un attribut LANGUAGE="langage" permettant de spécifier le type de langage utilisé. Pour VBScript, on indique "VBS", tandis que pour JavaScript nous aurions indiqué "JavaScript". On indique le contenu du script dans la zone d'application de la balise <SCRIPT>. Voici comment on peut inclure un script dans une page web :

<HTML>

<HEAD>

<TITLE>Exemple de script VBS</TITLE>

<SCRIPT LANGUAGE="VBS">

<!--

-->

</SCRIPT>

</HEAD>

<BODY>

</BODY>

</HTML>

On remarquera deux choses :

  1. Le script a été inséré dans l'en-tête du document HTML. Bien que cela ne soit pas une obligation, il est généralement conseillé de faire ainsi de façon à permettre la définition de fonctions VBS avant leur utilisation dans la page web.
  2. Le code du script est mis entre commentaires HTML. Cela permet d'éviter l'affichage du contenu du script à l'écran pour les navigateurs qui ne reconnaissent pas la balise <SCRIPT>.

Nous allons maintenant voir comment VBS gère les variables.

 

2. Variables et types de données

VBS est un langage non typé. Il est par ailleurs tout à fait possible de ne pas déclarer une variable avant de l'utiliser. Cela peut simplifier la programmation mais il est cependant conseillé de les déclarer tout de même afin d'éviter tout risque d'erreur.

On déclare une variable en la précédant du mot clé Dim. Cette instruction peut être suivie d'un ou plusieurs noms de variables, séparés par des virgules. Les noms de variables doivent respecter des règles classiques, que nous ne reproduirons pas ici.

Exemple :

Dim UnEntier, UneChaine

L'exemple précédent nous permet de faire deux remarques importantes :

  1. Nous n'avons pas indiqué de point virgule à la fin de l'instruction car VBS ne le requière pas.
  2. Nous n'avons spécifié aucun type de donnée pour les variables déclarées dans l'exemple.

Cette dernière remarque est importante. En VBS, toutes les variables sont de type variant. On peut y affecter indifféremment n'importe quel type de donnée, que cela soit une chaîne de caractères ou une valeur numérique. On définit cependant un certain nombre de sous-types car une fois qu'une affectation a été effectuée, la variable concernée adopte le (sous-) type de donnée qu'elle reçoit.

Les principaux sous-types sont les suivants :

Bien que les variables n'aient pas de type spécifié dans leur déclaration, il n'est pas toujours possible de les utiliser dans une même expression (comme par exemple l'addition d'un entier à une chaîne). C'est pourquoi VBS possède un certain nombre de fonctions permettant de convertir un type de donnée à un autre. En voici quelques unes:

Il en existe d'autres que nous n'avons pas citées.

Autre type important dont nous n'avons pas beaucoup parlé : les tableaux. On définit un tableau en VBS, toujours à l'aide de la commande Dim, mais en indiquant un entier entre parenthèses après le nom de celui-ci.

Exemple :

Dim Tableau(10)

définit un tableau de...11 éléments. En effet, bien que le 1er indice soit 0, on n'indique pas en argument la taille du tableau mais le numéro du dernier élément (i.e. la taille du tableau - 1).

A noter que VBS propose une extension intéressante des tableaux : les tableaux dynamiques; ils sont définis en n'indiquant pas de taille en argument (parenthèses vides). Pour utiliser de tels tableaux, on doit cependant indiquer leur nombre d'éléments, comme pour un tableau statique, mais en utilisant cette fois le mot clé ReDim. On peut ainsi spécifier plusieurs fois le mot clé ReDim en augmentant la taille du tableau à chaque fois.

Voyons comment utiliser les variables en VBS.

 

3. Opérateurs

Les opérateurs disponibles en VBS sont ceux rencontrés dans les langages de programmation classiques, avec cependant quelques différences par rapport aux langages comme le C ou Java, mais qui restent conformes à ce que l'on rencontre dans les BASICs classiques.

Par exemple, l'opérateur d'affectation et celui d'égalité sont les mêmes : "=". De plus, l'opérateur de différence est "<>". D'autre part, les opérateurs logiques s'expriment en toutes lettres, comme par exemple : And, Or, etc. Enfin, on concatène deux chaînes de caractères en utilisant l'opérateur &.

Prenons quelques exemples récapitulatifs sur la déclaration et l'utilisation des variables VBS :

<SCRIPT LANGUAGE="VBS">

<!--

' déclaration des variables

Dim entier

Dim chaine

Dim tableau(3)

' début du programme

entier = 23

chaine = "Valeur de l'entier : "

tableau(0) = entier*2

tableau(1) = entier

tableau(2) = 1997

tableau(3) = tableau(2)

chaine_non_declaree = chaine & "23"

-->

</SCRIPT>

Nous ne commenterons pas cet exemple, vu sa simplicité. Remarquons simplement qu'on indique des commentaires en VBS via l'utilisation d'une apostrophe '.

 

4. Boucles et structures conditionnelles

Listons rapidement les différentes structures conditionnelles et les boucles utilisables en VBS.

La structure d'un If en VBS est la suivante :

If condition Then

' instructions

Else

' instructions

End If

Comme dans tous les langages, le Else est facultatif. Notez que l'expression de condition n'est pas indiquée entre parenthèses.

Concernant les boucles, il en existe plusieurs :

Do While condition

' instructions

Loop

Do

' instructions

Loop While condition

Do Until condition

' instructions

Loop

Suivant le cas, la condition est exécutée au début ou à la fin de la boucle. D'autre part, on peut sortir d'une boucle en utilisant l'instruction Exit Do.

Concernant la boucle "For" :

For compteur = valeur_début To valeur_fin

' instructions pouvant utiliser la valeur de la variable "compteur"

Next

Notez qu'il existe également une instruction Exit For permettant de sortir d'une boucle For.

Nous allons maintenant continuer notre découverte de VBS en étudiant les fonctions et procédures.

 

5. Procédures et Fonctions

Contrairement aux langages comme le C ou Java, on distingue en VBS deux types de modules : les procédures et les fonctions.

Une procédure est une portion de programme, identifiée par un nom, qui ne renvoie aucune valeur. C'est équivalent à une fonction retournant un void en Java.

Exemple :

Sub FonctionX(entier)

' instructions utilisant la variable entier passée en

' argument

End Sub

Pour appeler une telle procédure, on indique son nom suivi d'un ou de plusieurs arguments éventuels, séparés par des virgules, soit pour l'exemple précédent :

FonctionX entier

Les fonctions quant à elles sont définies par les mots clés Function et End Fonction.

Exemple :

Fonction carre(x)

carre = x*x

End Fonction

Dans cet exemple, où l'on met au carré un entier passé en argument, on constate qu'il n'existe pas d'instruction du type return. En effet, pour renvoyer une valeur au programme appelant, on affecte tout simplement cette valeur à une variable portant le nom de la fonction.

Rappelons enfin qu'il est vivement conseillé de mettre les procédures et fonctions d'un programme dans l'en-tête du document HTML qui le contient.

 

6. Application

VBS a deux applications principales :

Nous verrons comment utiliser VBS avec ActiveX dans le prochain chapitre. Concernant le HTML, prenons un petit exemple de vérification d'un champ d'un formulaire HTML :

<HTML>

<HEAD>

<TITLE>Exemple VBScript</TITLE>

<SCRIPT LANGUAGE="VBScript">

<!--

Sub Verif_OnClick

Dim f

Set f = Document.form

If f.num.Value < 1 Or f.num.Value > 10 Then

MsgBox "Entrez un nombre entre 1 et 10 !" Else

MsgBox "Saisie Ok !" End If

End Sub

-->

</SCRIPT>

</HEAD>

<BODY>

<H1>Formulaire</H1>

<BR>

<FORM NAME="form">

Entrez un nombre entre 1 et 10 :

<INPUT NAME="num" TYPE="TEXT" SIZE="2">

<INPUT NAME="Verif" TYPE="BUTTON" VALUE="Valider">

</FORM>

</BODY>

</HTML>

Cet exemple nécessite d'apporter quelques remarques. Tout d'abord, précisons que dans cet exemple on crée un formulaire HTML comprenant une zone de saisie et un bouton.

On vérifie les données saisies dans la zone prévue à cet effet lorsque l'utilisateur clique sur le bouton, en appelant une procédure portant le nom Verif_OnClick. Notons que le nom de cette procédure est le nom du bouton (Verif) suivi de "_OnClick" indiquant que la procédure est appelée quand l'utilisateur clique sur le bouton en question.

Analysons le contenu de cette procédure proprement dite. Tout d'abord, on définit une variable f à laquelle on attribue une référence vers le formulaire contenu dans la page, via l'instruction Set. Le nom de celui-ci est Document.form, "Document" désignant le document courant, tandis que "form" est le nom que nous avons donné au formulaire dans la balise <FORM>. Notez l'importance de l'opérateur ".". Il sépare les noms de différents objets apparaissant dans une page HTML. On l'utilise également pour faire référence à une propriété d'un contrôle ActiveX, comme nous le verrons plus loin.

On a défini cette variable f afin de simplifier la vérification du champ de saisie du formulaire.

On distingue donc ensuite une structure conditionnelle qui teste la valeur du champ num du formulaire précité, en accédant à la propriété Value de ce champ. Si cette valeur est incorrecte, on affiche un message d'erreur. Si elle est correcte, on l'indique également à l'utilisateur. Notez que l'affichage de ces messages ce fait via une commande MsgBox qui prend en argument une chaîne et qui permet d'afficher cette chaîne dans une fenêtre de dialogue.

Nous terminons ainsi ce chapitre consacré à VBScript. Dans le suivant, nous allons nous intéresser réellement aux contrôles ActiveX, et en particulier à leur intégration dans une page web.