SELECT CASE |
Sélection de cas |
|---|---|
| Visual Basic | |
Syntaxe
|
SELECT CASE résultat CASE valeur instruction_exécuté_si_vrai CASE valeur instruction_exécuté_si_vrai CASE valeur instruction_exécuté_si_vrai CASE ELSE instruction_exécuté_si_faux END SELECT |
Paramètres
| Nom | Description |
|---|---|
| résultat | Ce paramètre permet d'indiquer l'expression à tester le résultat |
| valeur | Ce paramètre permet d'indiquer la valeur avec lequel le résultat doit être comparer |
| instruction_exécuté_si_vrai | Ce paramètre permet d'indiquer les instructions à exécuter si la condition est vrai |
| instruction_exécuté_si_faux | Ce paramètre permet d'indiquer les instructions à exécuter si la condition est fausse |
Description
Cette instruction permet de définir une liste de conditionnelles ayant comme point de comparaison un même résultat.
Remarques
- L'instruction SELECT CASE permet de simplifier la gestion de plusieurs conditions basées sur une même expression. Elle est plus lisible et plus élégante qu'une succession de If...ElseIf répétitifs. Ce choix structurel rend le code plus clair, plus facile à maintenir et réduit les risques d'erreurs de logique.
- Dans la syntaxe du SELECT CASE, le paramètre résultat est évalué une seule fois au début de l'instruction. Cela améliore légèrement la performance par rapport à des séries de If, où l'expression serait réévaluée à chaque comparaison. C'est aussi une garantie de cohérence, car le résultat ne risque pas de changer entre deux tests.
- Chaque bloc CASE valeur permet de comparer le résultat à une ou plusieurs valeurs. Comme on le voit dans l'exemple, il est possible d'énumérer plusieurs valeurs dans un seul CASE, séparées par des virgules, ce qui réduit encore la longueur du code. Cette capacité à grouper plusieurs cas évite de répéter inutilement des instructions.
- La clause CASE ELSE sert de garde-fou pour capter toutes les situations non prévues explicitement par les CASE précédents. Elle est fortement recommandée, même si elle n'est pas obligatoire, pour s'assurer que toutes les valeurs possibles du résultat sont bien traitées. Cela augmente la robustesse du programme et évite des comportements imprévus.
- Dans l'exemple fourni, l'utilisation de MsgBox pour illustrer les actions rend le comportement du programme très visuel et immédiat. Cependant, dans des applications plus complexes, les blocs d'instructions peuvent contenir plusieurs lignes, et pas seulement un message. Chaque CASE devient ainsi un mini-bloc d'exécution conditionnel dédié.
- La syntaxe autorise également des comparaisons plus complexes, comme des intervalles (CASE 1 TO 3) ou des expressions logiques (CASE IS > 5). Cela donne à SELECT CASE une grande flexibilité pour gérer des situations où les conditions sont légèrement plus nuancées qu'une simple égalité de valeur.
- Un aspect important à noter est que Visual Basic évalue les CASE dans l'ordre où ils apparaissent, et s'arrête dès qu'un CASE correspond. Cela signifie que l'ordre des blocs peut influencer le comportement du programme, notamment si les conditions sont susceptibles de se chevaucher ou d'être ambiguës.
- Enfin, l'usage du SELECT CASE favorise également une meilleure lisibilité du code, surtout pour d'autres développeurs ou pour une maintenance future. Un code bien structuré avec SELECT CASE est plus rapide à comprendre qu'une série désordonnée de If...Then...Else. C'est donc un excellent choix pour améliorer la qualité globale d'un projet Visual Basic.
Exemple
Voici un exemple une utilisation typique de cette instruction :
on obtiendra le résultat suivant :
Entre 1 et 3
Dernière mise à jour : Lundi, le 19 novembre 2012