Variables et boîtes de dialogue d'E/S

Leçons de programmation Visual Basic

Une variable est quelque chose dans lequel on stocke une valeur de différents type (texte, nombre entier, nombre décimal, nombre binaire, image...). On crée une variable avec l'instruction Dim .On dit alors que l'on déclare une variable. Exemple :

Dim Argent

On peut définir le type de donnée (texte, nombre...) que contiendra la variable avec l'instruction As :

Dim Argent As Integer

 Type de donnée   Description  Valeurs
Byte Entier non signé 0 à 255
Long Entier signé long -2 147 483 648 à 2 147 483 647
Integer Entier signé -32768 à 32767
String Chaîne de caractères 0 à 2 milliards
Boolean Binaire 1 ou 0, Vrai ou Faux
Date Date (8 octets) 01/01/0100 à 31/12/9999

On peut alors utiliser cette variable (ou plutôt son contenu) dans des commandes. Pour définir un contenu d'une variable, c'est à dire dire à Visual Basic ce qui sera stocké dans cette variable, on utilise l'opérateur = :

Argent = 100

La valeur 100 est stockée dans la variable Argent. On peut pour changer la valeur d'une variable, faire une boîte de message qui demande une valeur avec l'instruction InputBox (comme MsgBox) :

Inputbox "Entrez une valeur pour l'argent :","Salut",0


Il en résulte une boîte de dialogue comme ci-dessous. On peut alors imaginer Un programme simple qui ajoute des valeurs à une variable à chaque fois que l'on clique sur un bouton Command1 et qui affiche le total :

Notez que si la commande InputBox est placée avec un signe mathématique, elle nécessite des parenthèse entre les arguments (de même pour MsgBox). Si vous les oubliez, vous obtiendrez le message d'erreur ci-contre.

 

Le code de la feuille Form1 est alors le suivantc : on définit la variable à l'extérieur de la procédure car sinon, elle serait remise à zéro à chaque lancement de la procédure. On choisit de définir le type de données qu'elle contiendra pour diminuer la taille qu'elle prendra en mémoire.

Dim Argent As Integer

Private Sub Command1_Click()
Argent = Argent + InputBox("Entrez une valeur pour l'argent :", "Salut", 0)
End Sub

La valeur de la variable Argent serait alors affichée après la saisie avec la commande :

MsgBox "Vous avez " & Argent & " F"

On aurait alors la procédure suivante :

Dim Argent As Integer

Private Sub Command1_Click()
Argent = Argent + InputBox("Entrez une valeur pour l'argent :", "Salut", 0)
MsgBox "Vous avez " & Argent & " F", vbOKOnly, "Message"
End Sub


Ici, le message est en trois parties : une fixe : "Vous avez ", la variable Argent que l'on ajoute avec le &, une autre partie fixe " F" ajoutée avec un autre &. On peut ensuite convertir cette somme d'argent stockéee dans la variable Argent en Euros, avec les commandes mathématiques, considérons pour cela un autre bouton Command2 (vous pouvez changer le nom de ce bouton avec la propriété Name dans la page de propriétés à gauche, et son texte en changeant la propriété Caption, après avoir cliqué sur ce bouton pour le sélectionner.) :

ArgEuros = Argent / 6.55957

ArgEuros est une variable non déclarée qui stocke la quantité d'argent convertie en euros. Elle n'est pas déclarée car elle sert uniquement à la procédure Command2_Click(). On peut la déclarer, mais ce n'est pas obligatoire. Pour cela, on écrirait :

Dim ArgEuros As Integer

La commande du bouton Command2 est donc :

Private Sub Command2_Click()
ArgEuros = Argent / 6.55957
MsgBox "Vous avez " & ArgEuros & " €"
End Sub

Veillez à ne pas écrire les nombres décimaux avec une virgule mais avec un point, sinon, cela provoquerait une erreur ! La feuille et le code de ce projet sont au final :

Dim Argent As Integer

Private Sub Command1_Click()
Argent = Argent + InputBox("Entrez une valeur pour l'argent :", "Salut", 0)
MsgBox "Vous avez " & Argent & " F", vbOKOnly, "Message"
End Sub

Private Sub Command2_Click()
ArgEuros = Argent / 6.55957
MsgBox "Vous avez " & ArgEuros & " €"
End Sub

Pour ajouter des commentaires au code (texte ignoré par visual basic mais utile au programmeur), faites précéder le texte de ' (une apostrophe :

'Ceci est un commentaire

Les commentaires font une ligne, ous devez mettre une autre apostrophe au retour à la ligne.
Ils apparaissent en vert dans Visual Basic. C'est aussi utile pour inhiber temporairement une ligne de code...
Ils sont ignorés par le compilateur donc n'augmentent pas la taille de l'exécutable final.

Remarque :
On pourrait passer pour un porc face à un estèthe de programmation lorsque l'on somme un entier avec une chaîne string (texte) ici :

Argent + InputBox("Entrez une valeur pour l'argent :", "Salut", 0)

et lorsque l'on concatène (met bout à bout) des variables de type différents dans :

MsgBox "Vous avez " & Argent & " F", vbOKOnly, "Message"

En effet, dans le premier cas, la fonction InputBox renvoie une variable string contenant l'entrée utilisateur et dans le second cas, Argent est un entier alors que "Vous avez " est une chaîne (string). MsgBox réclame une variable de type chaîne comme premier argument, afin d'afficher un message. En fait, VB se charge de la conversion lorsque cela est nécessaire. A l'avenir, on préfèrera les lignes corrigées suivantes :

Argent + Val(InputBox("Entrez une valeur pour l'argent :", "Salut", 0))
MsgBox "Vous avez " & Str(Argent) & " F", vbOKOnly, "Message"