• Aucun résultat trouvé

Tester plusieurs conditions dans une structure de décision If…Then

Dans le document VISUAL BASIC (Page 191-196)

Visual Basic prend également en charge une structure de décision If…Then que l’on peut exploiter pour inclure plusieurs expressions conditionnelles. Ce bloc d’instructions peut contenir plusieurs lignes ainsi que des mots clés importants comme ElseIf, Else et End If.

If condition1 Then

instructions exécutées si condition1 est True ElseIf condition2 Then

instructions exécutées si condition2 est True

[On peut placer ici d’autres conditions ElseIf et instructions]

Else

instructions exécutées si aucune condition n’est True End If

Dans cette structure, condition1 est d’abord évaluée. Si cette expression conditionnelle est True, le bloc d’instructions situé en dessous s’exécute, instruction par instruction.

(Vous pouvez inclure une ou plusieurs instructions de programme.) Si la première condi-tion n’est pas True, on évalue alors la seconde expression condicondi-tionnelle (condicondi-tion2). Si la seconde condition est True, on exécute le deuxième bloc d’instructions. (On peut ajouter des conditions ElseIf et des instructions supplémentaires s'il existe d’autres conditions à

évaluer.) Si aucune expression conditionnelle n’est True, les instructions en dessous du mot clé Else s’exécutent. Enfin, la structure globale est clôturée par les mots clés End If.

Le code qui suit montre comment une structure If…Then avec plusieurs lignes peut servir à déterminer le montant de l’impôt à payer dans une déclaration d’impôt sur le revenu tout à fait fictive qui fonctionnerait de manière progressive.

Dim RevenuImposable, ImpôtDû As Double RevenuImposable = 50000

If RevenuImposable <= 7825 Then 'tranche d’imposition à 10 % ImpôtDû = RevenuImposable * 0.1

ElseIf RevenuImposable <= 31850 Then 'tranche d’imposition à 15 % ImpôtDû = 782.5 + ((RevenuImposable - 7825) * 0.15)

ElseIf RevenuImposable <= 77100 Then 'tranche d’imposition à 25 % ImpôtDû = 4386.25 + ((RevenuImposable - 31850) * 0.25)

ElseIf RevenuImposable <= 160850 Then 'tranche d’imposition à 28 % ImpôtDû = 15698.75 + ((RevenuImposable - 77100) * 0.28)

ElseIf RevenuImposable <= 349700 Then 'tranche d’imposition à 33 % ImpôtDû = 39148.75 + ((RevenuImposable - 160850) * 0.33)

Else 'tranche d’imposition à 35 % ImpôtDû = 101469.25 + ((RevenuImposable - 349700) * 0.35)

End If

Cette structure de décision est fort intéressante pour tester la variable à double précision RevenuImposable au premier niveau de revenu et aux niveaux de revenus suivants jusqu’à ce qu’une des expressions conditionnelles retourne True, puis détermine en conséquence l’impôt sur le revenu du contribuable. Grâce à quelques modifications simples, on peut l’exploiter pour calculer l’impôt dû pour tout contribuable dans un système d’imposition progressif, comme celui qui s’applique aux États-Unis. Tant que les taux d’imposition sont complets et à jour et que la valeur de la variable RevenuImposable est correcte, ce pro-gramme retournera l’impôt correct dû par les contribuables célibataires nord-américains pour 2007. Si les taux d’imposition changent, il est très simple d’actualiser les expressions conditionnelles. Grâce à une structure de décision supplémentaire qui détermine la caté-gorie de contribuable, il est très simple d’étendre le programme pour les y inclure tous.

Important Dans vos instructions If…Then et ElseIf, l’ordre des expressions conditionnelles est primordial. Dans l'exemple sur le calcul d’impôt, que se passerait-t-il si vous inversiez l’ordre des expressions conditionnelles et que dans la structure, les taux d’imposition appa-raissent du plus élevé au plus bas ? Les contribuables situés dans les tranches d’imposition des 10, 15, 25, 28 et 33 pour cent seraient tous placés dans la tranche d’imposition des 35 pour cent car ils possèdent tous un revenu inférieur ou égal à 349 700. (Visual Basic s’arrête à la première expression conditionnelle qui est True, même si d’autres le sont également.) Comme toutes les expressions conditionnelles de cet exemple testent la même variable, elles doivent intervenir par ordre croissant afin que les contribuables soient placés au bon endroit. En définitive : lorsque vous utilisez plusieurs expressions conditionnelles, soyez attentif à leur ordre.

Au prochain exercice, vous allez utiliser une structure de décision If…Then qui reconnaît l’utilisateur au moment où il ouvre le programme – ce qui représente une manière simple de commencer à rédiger vos propres structures de décision. Vous apprendrez également à exploiter le contrôle MaskedTextBox pour recevoir des entrées utilisateur dans un for-mat spécifique.

Validation des utilisateurs avec If…Then

1. Démarrez Visual Studio et créez un nouveau projet Application Windows Forms appelé Ma Validation Utilisateur.

Le nouveau projet est créé et un formulaire vide s’affiche dans le Concepteur.

2. Cliquez sur le formulaire et définissez la propriété Text du formulaire à « Validation Utilisateur ».

3. Utilisez le contrôle Label pour créer l’étiquette de votre formulaire et utilisez la Fenêtre de propriétés pour définir la propriété Text à « Tapez votre numéro de sécurité sociale ».

4. Utilisez le contrôle Button pour créer un bouton sur votre formulaire et définissez la propriété Text du bouton à « S’inscrire ».

5. Dans la Boîte à outils, cliquez sur le contrôle MaskedTextBox de l’onglet Contrôles communs, puis créez un objet zone de texte masqué sur votre formulaire, en des-sous de l’étiquette.

Le contrôle MaskedTextBox ressemble au contrôle TextBox que vous avez déjà uti-lisé. Toutefois, MaskedTextBox permet de contrôler le format des informations sai-sies par l’utilisateur dans votre programme. Pour ce faire, il faut définir la propriété Mask; il est possible d’exploiter un format prédéfini fourni par le contrôle ou de choisir votre propre format. Dans ce programme, vous utiliserez le contrôle Mas-kedTextBox pour demander aux utilisateurs de saisir un numéro de sécurité sociale au format standard à quinze chiffres.

6. Après avoir sélectionné l’objet MaskedTextBox1, cliquez sur la propriété Mask dans la Fenêtre de propriétés, puis cliquez sur le bouton adjacent (les trois points).

La boîte de dialogue Masque de saisie s’affiche, présentant une liste de vos modèles prédéfinis de formats, ou masques.

Astuce Les expressions qui peuvent être évaluées comme True ou False sont connues sous le nom d’expressions booléennes. Le résultat True ou False peut être affecté à une variable ou une propriété booléenne. Des valeurs booléennes peuvent être affectées à certaines propriétés d’objet ou à des variables booléennes créées grâce à l’instruction Dim et aux mots clés As Boolean.

7. Cliquez sur Numéro de sécurité sociale dans la liste. Voici la boîte de dialogue Mas-que de saisie :

Même si vous n’allez pas l’utiliser immédiatement, prenez un instant pour observer l’option <Personnalisé>, que vous utiliserez ultérieurement pour créer vos propres masques de saisie en utilisant des nombres et des caractères de séparation, comme par exemple des traits d’union (-).

8. Cliquez sur OK pour accepter Numéro de sécurité sociale comme masque de saisie.

Visual Studio affiche votre masque de saisie dans l’objet MaskedTextBox1, comme le montre la figure qui suit.

9. Double-cliquez sur le bouton S’inscrire.

La procédure événementielle Button1_Click s’affiche dans l’Éditeur de code.

10. Tapez les instructions suivantes dans la procédure événementielle :

If MaskedTextBox1.Text = "1 85 08 22 274 123 04" Then MsgBox("Bienvenue dans le système !")

Else

MsgBox("Numéro inconnu") End If

Cette simple structure de décision If…Then vérifie la valeur de la propriété Text de l’objet MaskedTextBox1. Si elle est égale à « 1 85 08 22 274 123 04 », la structure affiche le message « Bienvenue dans le système ». Si le numéro saisi par l’utilisateur correspond à une autre valeur, la structure affiche le message « Numéro inconnu ».

Toutefois, la beauté de ce programme réside dans la manière dont l’objet MaskedTextBox1 filtre automatiquement la saisie pour garantir que son format est correct.

11. Dans la barre d’outils Standard, cliquez sur le bouton Enregistrer tout pour enregis-trer vos changements. Désignez le dossier c:\vb08epe\chap06 comme emplace-ment.

12. Dans la barre d’outils Standard, cliquez sur le bouton Démarrer le débogage.

Le programme s’exécute dans l’environnement de développement. Le formulaire invite l’utilisateur à saisir un numéro de sécurité sociale au format approprié et affi-che des traits de soulignement et des tirets pour présenter à l’utilisateur l’agence-ment souhaité.

13. Tapez abcd pour tester le masque de saisie.

Visual Basic n’autorise pas l’affichage des lettres car celles-ci ne répondent pas au format demandé. Il faut un numéro de sécurité sociale à quinze chiffres.

14. Tapez 1234567890123456 pour tester le masque de saisie.

Visual Basic affiche le numéro 1 23 45 67 890 123 45 dans la zone de texte masquée en ignorant le seizième chiffre tapé. De nouveau, Visual Basic a forcé la saisie de l’utilisateur au format adéquat. Votre formulaire présente un résultat similaire à

15. Cliquez sur le bouton S’inscrire.

Visual Basic affiche le message « Numéro inconnu » car le numéro de sécurité sociale ne correspond pas à celui recherché par la structure de décision If...Then.

16. Cliquez sur OK, supprimez le numéro de sécurité sociale de la zone de texte mas-qué, saisissez le numéro 1 85 08 22 274 123 04 puis cliquez de nouveau sur le bou-ton S’inscrire.

Cette fois, la structure de décision reconnaît le numéro et affiche le message de bienvenue. Le message suivant apparaît :

Votre code a empêché un utilisateur non autorisé d’utiliser le programme et vous avez exigé une saisie spécifique afin de contrôler la saisie utilisateur.

17. Quittez le programme.

Dans le document VISUAL BASIC (Page 191-196)