<< Retour au sommaire

 

 

Les tableaux

 

 

 

Le sommaire :

  1. Introduction.
  2. Encore une intro.
  3. Le tableau d’une seule dimension.
  4. Premier exemple, un tableau en une seule dimension.
  5. Le tableau en deux dimensions.
  6. Deuxième exemple, un tableau en 2 dimensions.
  7. La fonction UBound.
  8. Le tableau dynamique.
  9. Troisième exemple, un tableau dynamique.

 

 

Introduction

 

Un tableau est une variable indicée.

Dans une variable ordinaire, vous ne pouvez stocker qu’une seule donnée…

Dans un tableau, au contraire, vous pourrez en stocker plein !

 

Notion de définition du tableau :

 

  1. Soit nous déclarons un tableau dont le nombre de données est spécifié, dans quel cas nous déterminerons dès la définition du tableau le nombre de données qu’il pourra stocker au maximum.
  2.  Soit nous déclarons un tableau dont le nombre de données n’est pas spécifié, dans quel cas nous ne déterminerons aucunement le nombre de données qu’il pourra stocker. Dans ce cas de figure, le tableau est dit « dynamique ».

 

Notion de dimensions :

 

-         Lors de la définition d’un tableau, le nombre de dimensions de ce dernier sera identique au nombre de valeurs spécifiées dans la définition du tableau en tant qu’arguments.

 

  1. Si vous ne spécifiez qu’une valeur, le tableau ne sera qu’en une seule dimension.
  2. Si vous spécifiez 2 valeurs, le tableau sera en 2 dimensions, un peu comme la bataille navale, on pourra comparer la structure du tableau à ce jeu en considérant des lignes et des colonnes.
  3. Si vous spécifiez 3 valeurs, ça devient un peu plus difficile à imaginer, mais vous aurez un tableau en 3 dimensions Etc. etc.

 

Pour désigner une cellule précise du tableau, on utilisera des valeurs entières appelées « indices ».

 

Un tableau d’une seule dimension n’a qu’un indice, un tableau de 2 dimensions a  2 indices, « lignes-Colonnes », un tableau en 3 dimensions a 3 indices etc.

 

 


Encore une intro

 

Le tableau en une seule dimension est le plus simple à manipuler dans la mesure où l’on peut considérer que sa structure est composée d’une seule ligne divisée en cellules.

 

Je rappelle qu’un tableau est une variable, mais une variable dans laquelle nous pourrons enregistrer plusieurs données.

D’ailleurs, en VISUAL BASIC, le tableau est dit « Variable indicée ».

 

La terminologie :

 

Les termes utilisés pour désigner les composants de la structure d’un tableau peuvent se discuter, et selon les manuels utilisé, les termes varient, malheureusement…

 

Pour désigner un composant du tableau, certains parlent de cases !

 

Me concernant, puisqu’il s’agit d’un tableau, je vais tenter de me rapprocher le plus possible des termes utilisés pour ce dernier.

 

  1. Un tableau d’une seule dimension contient donc une ligne de plusieurs cellules, chaque cellule pouvant bien sûr recevoir une donnée. Et comme il n’y a qu’une ligne, aucun indice n’est prévu pour la désigner, nous utiliserons donc un indice pour les cellules. D’ailleurs, accrochez-vous, le premier indice est 0, et oui, c’est comme ça. Donc, la cellule 0 peut contenir une donnée !
  2. Pour un tableau en 2 dimensions, il y a cette fois plusieurs lignes et pour chacune d’entre elles, des colonnes… Pour référencer l’une des cellules, il va falloir 2 indices, un pour la ligne, et un pour la colonne.
  3. Dans le cas d’un tableau en 3 dimensions, moins utilisé heureusement, il va falloir 3 indices ! Un pour la ligne, un pour la colonne, et comme la colonne est elle-même composée de cellules, eh bien un indice pour les cellules.
  4. On s’arrête là ? En effet, il vaut mieux ! Un tableau peut je crois être composé de plusieurs dizaines de dimensions…

 

 


Le tableau d’une seule dimension

 

La syntaxe de la déclaration du tableau :

Dim MonTableau(NombreCellules)

 

La description :

« Dim » est le mot clé de la déclaration.

« MonTableau » est le nom du tableau que l’on définit.

« NombreCellules » est le nombre de cellules désirées dans le tableau.

 

Par exemple, si vous écrivez 5 entre parenthèses, vous aurez 6 cellules, de 0 à 5.

 

Déclarons un tableau, on l’appelle « clients » et on lui définit 6 cellules…

 

Dim client(5)

 

Maintenant il faut le remplir sinon il ne sert à rien…

 

client(0) = « DURAN »

client(1) = « DUPONT »

client(2) = « MARTIN »

client(3) = « CHARLEMAGNE »

client(4) = « HADOCK »

client(5) = « PÉRIN »

 

Maintenant je désire afficher « CHARLEMAGNE » dans une page :

document.write (client(3))

 

Et puis tenez, maintenant affichons tout le tableau « clients » par l’intermédiaire d’une boucle !

 

For i=0 To 5 Step 1

Document.writeln (clients(i))

Next

 

L’intégralité du tableau sera affiché par l’intermédiaire du compteur « i » qui prendra consécutivement les valeurs de 0 à 5.

Par conséquent, le nombre d’itérations de la boucle est de 6…

 

 


Premier exemple, un tableau en une seule dimension

 

Voici un exemple.

 

Ici, nous déclarons un tableau logiciels » contenant 6 cellules.

Ensuite, nous affectons un nom de logiciel dans chacune des cellules…

 

Pour finir, une boucle affiche le contenu du tableau « clients » dans une liste ordonnée…

 

Afficher le premier exemple >>

 

Le code :

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >

<head>

<title>Apprentissage des tableaux</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<body>

<!-- Préparation de la page en XHTML -->

<h1>Construction d'un tableau en une seule dimension</h1>

<table border="1">

<caption>J'espère que ça va marcher...</caption>

<tr><td>

<ol>

<script type="text/VBscript">

' Déclaration du tableau

Dim logiciels(5)

' Affectation des données dans le tableau

logiciels(0) = "WORD"

logiciels(1) = "EXCEL"

logiciels(2) = "ACCESS"

logiciels(3) = "WavPad"

logiciels(4) = "SoundForge"

logiciels(5) = "VBscript"

' Affichage du contenu du tableau par le biais d'une boucle

For i=0 To 5 Step 1

 document.write ("<li>")

 document.writeln (logiciels(i))

 document.write ("</li>")

Next

document.write ("</ol>")

document.write ("<br />")

</script>

</td></tr>

</table>

</body>

</html>

 

 


Le tableau en 2 dimensions

 

Bon, après avoir élaboré une introduction digne de ce nom, enfin je l’espère, vous allez probablement digérer assez facilement ce chapitre !

 

La syntaxe de la déclaration d’un tableau en 2 dimensions :

Dim Montableau(NombreLignes,NombreColonnes)

 

La description :

« Dim » est bien sûr le mot clé de la déclaration.

« Montableau » est le nom du tableau que l’on déclare.

« NombreLignes » est le nombre de lignes, c’est la première dimension.

« NombreColonnes » est le nombre de colonnes, c’est la deuxième dimension.

 

« NombreLignes » & « NombreColonnes » sont des numériques entiers. Sachant que la première valeur de chaque dimension est 0, si vous spécifiez une valeur « N » pour l’une des deux dimensions, le nombre de lignes ou de colonnes sera égal à N+1.

 

Il en est de même pour les tableaux de plus de 2 dimensions. Seul le nombre d’indices change…

 

Quant à l’opération d’affectation, vous devez bien sûr spécifier autant d’indices que de dimensions contenues dans la structure du tableau.

 

MonTableau(1,2) = « Bonjour ! »

MonTableau(2,0) = « Au revoir ! »

 

 


Deuxième exemple, un tableau en deux dimensions

 

Voici un exemple assez lourd au sens humoristique du terme…

 

C’est l’histoire de quelques bons hommes d’affaire, enfin, c’est à vous de juger !

 

Afficher le deuxième exemple >>

 

Le code :

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >

<head>

<title>Histoire de fric</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<body>

<h1>Un article</h1><pre>

<script type="text/VBscript">

' déclaration d'un tableau en 2 dimensions

Dim clients(2,2)

' Affectation des coordonnées pour le premier client

clients(0,0) = "DURAN"

clients(0,1) = "SOS DÉPANNAGE"

clients(0,2) = "PARIS"

' Affectation des coordonnées pour le deuxième client

clients(1,0) = "DUPONT"

clients(1,1) = "SOS DÉTRESSE"

clients(1,2) = "MARSEILLE"

' Affectation des coordonnées pour le troisième client

clients(2,0) = "CHARLEMAGNE"

clients(2,1) = "SOS École pour tous"

clients(2,2) = "ROZALUCIA-SUR-Garonide"

' Cette ville n'existe pas...

' Affichage de quelques cellules

document.writeln ("Une salle affaire")

document.writeln (clients(0,0)&" Président de l'association "&clients(0,1)&", implantée à "&clients(0,2)&", a eu un litige avec Monsieur "&clients(1,0)&" de l'association "&clients(1,1)&".")

document.writeln ("Que faire ?")

document.writeln ("Dans un premier temps, ces 2 hommes se sont retrouvés à "&clients(1,2)&" pour  en discuter...")

document.writeln ("Seulement, le Directeur informatique spécialisé dans le VBscript, Monsieur "&clients(2,0)&", de l'association "&clients(2,1)&" à "&clients(2,2)&", est venu semer le trouble durant les explications.")

document.writeln ("Ce Monsieur "&clients(2,0)&" ferait mieux d'aller s'occuper à l'école !")

document.writeln ("Bon, quant à ce Monsieur "&clients(0,0)&", pourquoi a-t-il volé 3 euros à "&clients(1,0)&" ?")

document.write ("Affaire à suivre...")

</script>

</pre>

</body>

</html>

 

 


La fonction UBound

 

La fonction UBound permet d’obtenir le nombre de cellules du tableau passé en paramètre.

 

La syntaxe :

NombreCellules = UBound(NomDuTableau)

 

La description :

« NombreCellules » est une variable qui reçoit le nombre de cellules contenues dans « MonTableau ».

 

« MonTableau » est donc l’argument de la fonction « UBound ».

 

Attention, la valeur retournée par « UBound » correspond à la valeur spécifiée dans la déclaration du tableau, et comme le premier indice du tableau est 0, pour connaître le nombre exact de cellules, vous devrez rajouter 1 à la valeur retournée…

 

Donc :

NombreCellules = UBound(MonTableau)+1

 

Cependant, en ne spécifiant que le nom du tableau, seul le nombre de cellules contenues dans la première dimension est retourné…

 

Dans le cas d’un tableau d’une seule dimension, pas de problème…

 

Par contre, pour réaliser le traitement sur la deuxième dimension :

NombreCellules = UBound(MonTableau,2)

 

Ensuite, pour réaliser le traitement sur la troisième dimension :

NombreCellules = UBound(MonTableau,3)

 

(Et ainsi de suite…)

 

 


Le tableau dynamique

 

Le tableau dynamique permet de redimensionner le tableau quand on le désire.

 

L’étape 1, sa déclaration :

Dim MonTableau()

 

Ici, rien d’exceptionnel, excepté que l’on ne précise aucune dimension dans les parenthèses…

 

L'étape 2 consiste à dimensionner le tableau avant de s’en servir, mais, cette opération peut être également un redimensionnement, s’il a dores et déjà était dimensionné au moins une fois.

ReDim MonTableau(NombreCellules)

 

Attention, important, avant d’être utilisé, le tableau doit être  dimensionné au moins une fois !

 

Toutefois, le redimensionnement a pour conséquence d’effacer les données déjà enregistrées dans le tableau.

 

Si l’on désire éviter ce genre de désagrément, vous pouvez utiliser le mot clé « Preserve » :

ReDim Preserve Montableau(NonbreCellules)

 

La troisième étape est très naturellement l’affectation des données dans le tableau :

MonTableau(indice) = « données »

 

 


Troisième exemple, un tableau dynamique

 

Dans cet exemple, on demande le nombre de contacts que l’utilisateur désire ajouter à une liste de contacts.

Ensuite, après la saisie des contacts, ces derniers sont affichés dans une liste. Le tableau s’intitule « contacts », il s’agit bien sûr d’un tableau dynamique dont la portée est globale.

 

Deux scripts sont utilisés…

 

Afficher le troisième exemple >>

 

Le code :

 

<script type="text/VBscript">

' Déclaration du tableau dynamique contacts dont la portée est globale

Dim contacts()

</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >

<head>

<title>Fais joujou avec les contacts !</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<body>

<script type="text/VBscript">

' Demande à l'utilisateur combien de contacts il veut saisir

NBCellules = InputBox ("Combien de contacts désirez-vous saisir ? ","Question")

' Redéfinition du tableau

ReDim contacts(NBCellules)

' boucle allant de 1 à NBCellules

For i=1 To NBCellules Step 1

 ' demande à l'utilisateur de saisir le contact numéro i

 contacts(i) = InputBox ("Saisissez le contact numéro "&i&" : ","Les contacts")

Next

</script>

<!-- Préparation de l'affichage des contacts en XHTML

<h1>Bienvenue dans l'a super application Gestion Contacts</h1>

<table border="1">

<caption>étude du tableau</caption>

<tr><td>

Liste de mes nouveaux contacts :<br />

<ol>

<script type="text/VBscript">

' Extraction du nombre de contacts saisis

NBCellules = UBound(contacts)

' boucle allant de 1 à NBCellules

For i=1 To NBCellules Step 1

 ' Affichage du contact correspondant à l'indice i

 document.writeln ("<li>"&contacts(i)&"</li>")

Next

</script>

<!-- Fermeture des balises XHTML

</ol></td></tr></table>

</body>

</html>

 

Philippe BOULANGER