logo Pierre AULAS
Visual Basic 6 - Tableau dynamique
 Parcours  |   Réalisations  |   Cours  |   Chroniques  |   Divers
Création de l'interface graphique
Définition des propriétés
Ecrire le code du programme

Tableau dynamique

Cet exercice permet de mettre en pratique la manipulation d'une zone de liste et le redimensionnement des tableauxà l'aide de ReDim et Preserve. Vous pouvez voir le fonctionnement de cet application en cliquant ici.

Cette image vous montre l'aspect de votre application une fois terminée.
A gauche une zone de liste dans laquelle vient s'inscrire le contenu d'une variable tableau mintaTableau contenant 10 valeurs.
Le bouton Remplir permet d'affecter le contenu de cette variable à la zone de liste.
Le bouton Réduire avec Preserve ramène le tableau mintaTableau à cinq éléments tout en conservant son contenu.
Le bouton Réduire sans Preserve ramène le tableau mintaTableau à cinq éléments mais sans en préserver le contenu.
Le bouton Quitter permet de quitter l'application. L'utilisateur peut également quitter l'application en appuyant sur la touche Echapp.

Les étapes de programmation

Essayez toujours d'organiser votre travail en trois étapes  :

1. Création de l'interface graphique

Disposez vos 4 boutons de commande et votre zone de liste (ListBox) de la manière indiqué ci-dessous:

La zone de liste doit pouvoir afficher une dizaine de ligne sans barre de défilement.

En séléctionnant en même temps vos trois boutons de manipulation et en utilisant les options fournies par le menu Format > Uniformiser la taille ou Format > Aligner, etc., uniformisez leur taille et placez-les correctement, puis centrez le bouton Quitter en dessous.

2. Définition des propriétés

Commencez par définir si ce n'est pas déjà fait la propriété Name de votre formulaire en frm01.

Vous devez ensuite définir les propriétés des 5 contrôles présents sur votre formulaire comme indiqué dans le tableau qui suit:

Objet  Propriété  Valeur
Form1  Name  frm01
 Caption  Exercice - Tableaux dynamiques
List1  Name  lstElement
 List  (vide)
Command1  Name  cmdRemplir
 Caption  &Remplir
Command2  Name  cmdReduireAvec
 Caption  Réduire &avec Preserve
Command3  Name  cmdReduireSans
 Caption  Réduire &sans Preserve
Command4  Name  cmdQuitter
 Caption  &Quitter
 Cancel  True

Votre formulaire devrait maintenant ressembler à cela:

3. Ecrire le code du programme

L'essentiel de cet exercice, destiné à maîtriser les tableaux, se passe dans la fenêtre de code (F7).

Commencez par déclarer en variable de module le tableau tableau dynamique mintaTableau destiné à recevoir des entiers.
Rappelez-vous qu'une variable de portée module se déclare dans l'en-tête, avec Private ou Dim.

Dim mintaTableau() As Integer

Profitez-en pour ajouter la procédure événementielle du bouton Quitter:

Private Sub cmdQuitter_Click()
  Unload Me 'Unload histoire de changer de End
End Sub

Codez maintenant le bouton cmdRemplir. Concrétement celui-ci doit attribuer dix valeurs au tableau mintaTableau puis transférer le contenu de mintaTableau dans la zone de liste lstElements.

La première étape consiste à redimensionner correctement le tableau.

ReDim mintaTableau (1 To 10)

Ensuite on créé une variable de portée procédure intCompteur qui va nous servir de compteur pour la boucle For destinée à remplir la tableau minaTableau. Puis on fait tourner la boucle:

Dim intCompteur As Integer
For intCompteur = 1 To 10
  mintaTableau(intCompteur) = intCompteur * intCompteur 'Histoire de remplir
Next

Il ne reste plus qu'à s'assurer que la zone de liste est vide en appelant sa méthode Clear puis en lui affectant, au moyen de la méthode AddItem les valeurs contenus dans notre tableau.

Si vous avez du mal à vous souvenir des différentes propriétés et méthodes des objets disponibles dans VB, n'oubliez pas qu'il existe un explorateur d'objet (accessible via le menu Affichage > Explorateur d'objet ou le raccourci F2) qui vous permet de retrouver tout cela en procédant comme indiqué ci-dessous:

Remarquez que VB vous aide en plaçant un dessin différent devant les propriétes, les méthodes et les événements disponibles pour chaque classe d'objet.

Il en vous reste plus qu'à compléter la procédure événementielle du bouton cmdRemplir:

lstElements.Clear
For intCompteur = 1 To 10
  lstElements.AddItem = mintaTableau(intCompteur)
Next

Lancer l'exécution de votre application et vérifiez qu'elle fonctionne bien.

Passez ensuite à la rédaction de la procédure événementielle de btnRéduireAvec. Cette procédure doit redimensionner mintaTableau à 5 éléments en conservant les données. Il faut ensuite mettre à jour le contenu de la zone de liste pour pouvoir le résultat (un copier-coller d'une partie du code de la procédure précédente peut fait l'affaire).

Private Sub cmdQuitter_Click()
  Dim intCompteur As Integer
  ReDim Preserve mintaTableau (1 To 5)
  lstElements.Clear
  For intCompteur = 1 To 5
    lstElements.AddItem mintaTableau(intCompteur)
  Next
End Sub

La procédure liée à btnReduireSans réduit le tableau mintaTableau à 5 éléments mais cette fois-ci sans utiliser le Preserve. Si vous avez bien saisi comment fonctionne la procédure précédente, celle-ci est l'affaire d'un copier-coller.

Les sources de cet exercice sont disponibles ici en faisant un clic droit "Enregistrer la cible de ce lien".