Programmer en Visual Basic pas à pas

Pour faire un programme en VB il faut (Cf " Programmation en Visual Basic : le principe ") :
  • créer l'interface utilisateur
  • remplir les procédures d'événement qui nous intéressent (code)

Créer l'interface utilisateur:

Interface utilisateur = ce que l'utilisateur du programme voit pendant qu'il l'utilise, càd une fenêtre (alias "form") avec des objets dedans (des boutons, des barres de défilement, des cases à cocher des menus…).

NB: Quand vous démarrez VB, double-cliquez sur "standard EXE"

Au démarrage de VB ou quand on crée un nouveau programme, une nouvelle fenêtre est automatiquement créée. Elle est vide, il ne nous reste plus qu'a créer et y placer les objets que l'on désire.



Cela ce fait en utilisant VB comme un logiciel de dessin:
Dans la "boîte à outils" on clique sur le type d'objet que l'on veut créer. Dans ce qui va suivre, on va faire prendre l'exemple d'un petit prgm qui affiche "bonjour" quand on clique sur un bouton.
On va d'abord créer un bouton, donc on clique dans la barre d'outil sur l'icône qui représente un bouton. (si vous laissez la flèche de la souris un peu de tps sur cette icône sans bouger la souris, vous verrez apparaître "command button" sur un fonds jaune)


Puis on le trace, (comme on trace un rectangle dans MsPaint):
  • Aller sur la fenêtre du projet
  • Cliquer
  • Bouger la souris sans relâcher le bouton
  • Relâcher le bouton de la souris


L'objet est créé!
Ensuite, une fois les objets créés, on peut changer leur place :
  • Cliquer sur l'objet à bouger
  • Sans relâcher le bouton, bouger la souris



  • Relâcher le bouton une fois l'objet à la place voulue


Enfin, une fois tout les objets créés, il faut régler leurs propriétés.
En effet, chaque type d'objet à plusieurs propriétés :
  • son nom,
  • sa couleur,
  • pour les types d'objets amenés à utiliser du texte, la propriété intitulé (alias "caption")
  • ... ect ...
Quand on crée un objet, VB donne à ses propriétés des valeurs pas défaut. Pour modifier les valeurs des propriétés d'un objet, on procède comme suit :
  • on sélectionne, en cliquant une fois dessus, l'objet dont on veut changer les propriétés,
  • on regarde la fenêtre des propriétés (alias "properties") et on constate qu'il y a une liste de deux colonnes avec une barre de défilement :
  • Colonne de gauche -> propriétés
  • Colonne de droite -> valeur des propriétés
    • il suffit alors de faire défiler la barre de défilement jusqu'à ce que l'on voie dans la colonne de gauche la propriété qui nous intéresse;
    • dans la colonne de droite, juste à côté du nom de la propriété figure sa valeur, il suffit alors de cliquer sur cette valeur, et de taper au clavier la nouvelle valeur.
Une propriété importante, et commune à tous les types d'objets est le nom (alias "name" :-) on s'en serai douté).
Les noms donnés par défaut sont chiants à retenir et à taper; donc une bonne habitude: changer le nom des objets après les avoir créés.
Pour changer le nom d'un objet on procède comme il a été dit avant:
  • On clique dessus
  • Dans la fenêtre des propriétés on cherche "name"



  • On clique sur l'ancien nom (à droite de "name") et on tape le nouveau au clavier.


Le même chose pour les autres propriétés.
NB: 2 objets de types différents n'ont pas les mêmes propriétés; ainsi, un bouton de commande (alias "command button") aura une propriété "caption" qui est le texte contenu dans le bouton, alors qu'une barre de défilement n'aura pas de propriété "caption" car il n'y a pas de texte sur une barre de défilement!

Remplir les procédures (taper le code)

Maintenant que l'on a fait l'interface utilisateur, il faut taper le code des fameuses procédures d'événements.
Visual Basic nous simplifie la tâche: toutes les procédures d'événement existent déjà, mais elles sont vides (il n'y a pas de code dedans). Il nous suffit donc de les remplir.

Comment faire?
  • Il faut d'abord accéder à la procédure d'événement qui nous intéresse, pour cela, double cliquer sur l'objet qui nous intéresse. Il apparaît une fenêtre de code (qui ressemble à celle du bloc notes).



  • En haut de cette fenêtre de code, il y a deux listes déroulantes :
    • Celle de gauche nous permet de choisir l'objet; dans cette liste apparaît le NOM de l'objet sur lequel on vient de double cliquer
    • Celle de droite nous permet de choisir l'événement que l'on veut programmer.


      • Comme on peut le voir dans la liste déroulée ci-dessus, il y a bcp d'événements possibles. Il suffit de cliquer sur l'événement que l'on désire programmer. Apparaît alors la procédure d'événement, qui est vide.
      • Par exemple, si on clique sur "click", la procédure d'événement qui s'affichera sera celle qui sera exécuté quand l'utilisateur cliquera sur l'objet.
  • Maintenant, nous avons affiché la procédure d'événement, qui est vide; en effet, il n'y a que trois lignes:
    Private Sub ... ... ...
    
    End Sub
  • C'est à nous de remplir la procédure avec des instructions en Visual Basic.
Voir le "dictionnaire Algorithme / VB"

Comme vous pouvez le voir en consultant le dico, on retrouve le même genre d'instructions que dans les autres langages (c++, Qbasic…).

Là où ça change, c'est pour l'affichage des résultats. Il n'y a pas d'équivalent à de "cout" en VB. Pour afficher des résultats, il faut passer par les objets de l'interface utilisateur (les objets).

Dans ce petit exemple, on veut afficher le texte "bonjour".

Pour cela, on avait créé un objet de type "label" (étiquette) qui sert à afficher des textes. L'objet "label" dispose en effet d'une propriété "caption", que l'on peut régler quand on dessine l'interface.



Le code d'une procédure VB peut aussi modifier une propriété quand le programme s'exécute.Pour cela, il faut taper:

NomDeObjet.NomPropriété = NouvelleValeur

Dans notre petit exemple, on va se servir de ça pour afficher bonjour. Donc, dans le code de la procédure événement "clic" du bouton, on tape:

Label1.caption = "Bonjour"



Et voilà, le programme est fait! On exécute en tapant sur la touche "F5" ou en allant dans le menu "RUN / START"



On voit alors notre programme apparaître:



On clique sur le bouton…



On relâche et hop! il s'affiche "Bonjour"



Nous avons vu le principe du Visual Basic: l'utilisateur déclenche un événement et VB exécute la procédure correspondante.

Deux autres façons d'afficher un résultat :

Nous avons vu aussi que pour afficher un résultat, on pouvait modifier les propriétés des objets de l'interface utilisateur. Mais il y a deux autres moyens de renvoyer des résultats :
  • utiliser des boîtes de dialogues
  • agir sur les objets avec des instructions appelées "méthodes"

Les boîtes de dialogues:

Imaginons que, au lieu d'afficher "bonjour" dans la fenêtre, on désire faire apparaître une boîte de dialogue avec un bouton OK, comme on en voit souvent dans les programmes de windows. C'est très simple, il suffit de taper, dans le code de la procédure événement:

MsgBox "bonjour"



On exécute, et voilà ce que cela donne quand on clique sur le bouton (on voie notre petite boîte de dialogue apparaître dans le quart bas droit de l'écran avec un bouton OK):


Les méthodes:

Chaque objet, en plus d'avoir plusieurs propriétés, dispose de plusieurs méthodes, c'est à dire des instructions qui peuvent s'appliquer à lui. Pour utiliser une méthode sur un objet, il faut taper dans le code :

NomObjet.NomMethode paramètres

Pour comparer entre VB et c++:

Visual Basic C++
Type d'objet "truc" Classe "truc"
Objet truc appelé "bidule4" Variable "bidule4" de type "truc"
Propriété Variable publique
Méthode Opération

Exemple d'utilisation d'une méthode: On veut, en plus d'afficher "Bonjour", dessiner un cercle dans la fenêtre. Pour cela, il existe un objet appelé "picture box", dédié au graphisme, qui possède des méthodes (= des instructions, des opérations) pour dessiner dedans.

On crée donc dans l'interface une "picture box":




En regardant dans la fenêtre des propriétés, on se rend compte que VB a appelé la "picture box" du nom de "picture1". Pour prendre une bonne habitude, on change ce nom en "image1":



Maintenant que l'on a crée l' "image", on va s'en servir. On affiche le code de la procédure d'événement en double cliquant sur le bouton(et on sélectionne dans la liste déroulante de droite l'événement "clic" si ce n'est pas celui qui est affiché), et on tape le code pour tracer un cercle:

image1.Circle (400, 400), 200, 0

Les paramètres de la méthode "circle" sont :

(Xcentre, Ycentre), rayon, couleur

NB: 0 = couleur noire



NB: Les coordonnées sont en " twips " ; pour savoir la taille des objets dans cette unité, jetez un śil sur les propriétés Width et Height (respectivement Largeur et Hauteur).

On exécute et voilà le résultat après avoir cliqué sur le bouton:


Deux façons de traduire "cin" ou comment demander des données:

En VB, il n'y a pas de commande équivalente au "cin" du c++. Là encore, il va falloir passer par l'interface utilisateur. On peut:
  • utiliser une boîte de saisie (càd afficher une boîte de dialogue ou il y aura une zone pour que l'utilisateur tape du texte)
  • utiliser un objet conçu pour la saisie de donnée
Utiliser une boîte de saisie :

Par exemple, on ne veut plus afficher "bonjour", mais demander un nombre à l'utilisateur et afficher ce nombre. Pour cela, il faut utiliser la fonction "inputbox" qui affichera la fameuse boîte de saisie et qui renverra le résultat comme une chaîne de caractères.

Syntaxe de inputbox :

Chaîne$ = InputBox("Question", "Titre de la boîte", "Valeur par défaut")

Ainsi, si on vaut une boîte de saisie qui demande de taper un nombre, et que le nombre par défaut (càd le nombre qui sera proposé par Windows à l'ouverture de la boîte) " 1 ", il faut taper:

Label1.Caption = InputBox("Tapez un nombre:", "Saisie d'un nombre", "1")

Et voilà le résultat quand on exécute le programme et que l'on clique sur le bouton:



Encore plus fort: maintenant, on ne va plus se contenter de réafficher le nombre saisi par l'utilisateur, mais on va afficher dans l'étiquette "premier" si le nombre tapé est premier, ou "non premier" si le nombre n'est pas un nombre premier.

Faisons d'abord un petit algo qui permet de savoir si un nombre est premier:

    i: ENTIER
    nb: ENTIER
    prem: BOOLEEN
    LIRE nb
    prem <- VRAI
    POUR i de 2 A nb-1 FAIRE
        SI (nb/i=PARTIEENTIERE(nb/i)) ALORS
            prem <- FAUX
        FINSI
    FINPOUR
    SI prem ALORS
        ECRIRE "premier"
    SINON
        ECRIRE "non premier"
    FINSI

Puis traduisons cet algo en VB grâce au dictionnaire Algo-VB que je vous ai fourni. Pour traduire LIRE en Visual Basic on utilise une boîte de saisie et pour traduire ECRIRE, un objet de l'interface utilisateur (l'étiquette "label1"):

    Dim i%
    Dim nb%
    Dim prem As Integer
    nb% = Val(InputBox("Tapez un nombre:",
"Saisie d'un nombre", "1"))
    prem = True
    For i% = 2 To nb% - 1
        If nb% / i% = Fix(nb% / i%) Then
            prem = False
        End If
    Next i%
    If prem Then
        Label1.Caption = "premier"
    Else
        Label1.Caption = "non premier"
    End If



NB: Comme la fonction inputbox() retourne comme résultat une chaîne, on est obligé d'utiliser la fonction Val() qui convertit la chaîne en entier (ex: "1023" est convertit en 1023).

NB: en VB, un booléen doit être déclaré comme un entier.

On exécute :



On clique sur le bouton et on tape dans la boîte de saisie le nombre "17"



Et voilà le résultat:



Utiliser un objet conçu pour la saisie :

On vient de voir comment demander des données avec une boîte de saisie. Mais on peut aussi utiliser un objet conçu pour la saisie de donnée, une zone de texte.

On va donc créer dans notre interface une zone de texte:





On renomme cette zone de texte en "saisie_nb":



Puis, on double clique sur le bouton pour avoir accès à notre procédure d'événement:



Enfin, pour utiliser notre zone de texte, dans le code on remplace la ligne:

nb% = Val(InputBox("Tapez un nombre:", "Saisie d'un nombre", "1"))

Par la ligne:

nb% = Val(saisie_nb.Text)

En fait, on récupère le texte que tape l'utilisateur dans la propriété "text"

On éxécute:



Dans la zone de texte, on tape "16"



On clique sur le bouton, ... et voilà:


Conclusion :

Nous avons passé en revue le principe du VB, ainsi nous avons vu:
  • comment créer l'interface utilisateur
  • comment remplir les procédures d'événements
  • différentes façons de demander des données
  • différentes façons de retourner un résultat
Le VB met à notre disposition de nombreux objets (20 dans la version standard + assistant créateur de menus), et nous n'en avons présenté que 4 dans ce document (bouton de commande, étiquette, zone d'image, zone de texte). Aussi, ce que nous avons appliqué à ces 4 objets est valable pour les 16 autres; ainsi, un type d'objet aura toujours des procédures d'événements, des propriétés et des méthodes qui lui sont propres.
Ainsi, si vous avez envie d'aller plus loin, et par exemple d'utiliser une barre de défilement, n'oubliez pas que le principe reste inchangé, il vous reste seulement à trouver quelles sont les propriétés d'une barre de défilement, quelles sont ses méthodes et enfin à quels événements une barre de défilement peut réagir.
Vous trouverez tout ces renseignements dans une mine d'or: l'aide de Visual Basic. En effet, et c'est rare pour les langages de programmation, elle est très bien faite. Les explications sont simples et à chaque fois il y a un petit exemple à essayer. Et puis vous pouvez toujours venir passer me voir au club info ou bien me mailer.
J'espère que mon cours de VB vous a donné envie de programmer. VB ça peut paraître compliqué au début, mais on peut faire facilement des beaux programmes sous Win95. Et en bidouillant un peu avec les DLLs on peut faire des trucs cools genre lire un fichier WAV, déformer des images, faire des animations en 3D...