Pour gérer vos conditions, vous disposez déjà de l’instruction IF…THEN…ELSE…et lorsque plusieurs tests sont à effectuer, de l’instructions IF…THEN…ELSEIF…
Mais vous pouvez également utiliser la syntaxe SELECT CASE.
Cette instruction permet d’effectuer une ou plusieurs actions en fonction d’une condition remplie
Quels en sont ses avantages et ses inconvénients ?
Son utilisation prend tout son sens lorsque plusieurs conditions sont à analyser comme par exemple :
Plusieurs valeurs textes possible :
- Si c’est Lyon, on exécute les actions X
- Si c’est Nice, on exécute les actions Y
ou une condition numérique sur des plages de valeurs successives:
- >100, on exécute les actions X
- Entre 50 et 100, on exécute les actions Y
- Entre 1 et 49, on exécute les actions Z
Sa syntaxe est la suivante

Lorsque l’expression à tester est vraie, VBA exécute les instructions du traitement à effectuer et n’a plus besoin d’effectuer les autres tests du SELECT CASE. Le SELECT CASE se termine et vba passe à l’instruction qui suit le END SELECT.
CASE ELSE permet d’indiquer ce qu’il faut faire dans le cas où aucun des cas testés n’a pu être vérifié.
Une structure de type SELECT CASE est souvent plus simple à comprendre et à relire que son équivalent sous forme d’une série de IF ELSEIF
Exemple1
On cherche à catégoriser le délai de règlement de nos clients. En fonction du délai, un commentaire va être affiché.

On récupère la valeur de la variable délai, issue d’une lecture de cellule Excel ou d’une INPUTBOX.
Cette variable est l’expression qui va être testée à travers le SELECT CASE : Select Case Delai
Case Is >= 60 : on commence par tester si la valeur de la variable délai est supérieure ou égal à 60
Si c’est le cas, le texte du commentaire est « Règlement très en retard. Vérifier client »
Case 45 To 59 : le test porte sur une plage de valeurs, les nombres entre 45 et 59.
Case 30 To 44 : le test porte sur une plage de valeurs, les nombres entre 30 et 44.
Case 1 To 9 : le test porte sur une plage de valeurs, les nombres entre 1 et 9. Ce test aurait pu également s’écrire de cette façon:
Case 1,2,3,4,5,6,7,8,9
Case Else
Commentaire = « Delai de règlement erroné » : le case else permet de gérer les autres cas notamment, dans notre exemple, les délais de règlement égal à zéro ou négatif
Exemple 2
Les frais de déplacements varient en fonction de la ville de travail

La cellule A1 contient la valeur « Paris ». Le montant des frais sera donc de 100.
La cellule A1 contient la valeur « lille » ou contient la valeur « nice », le montant des frais sera, dans les deux cas, de 30
Attention : le SELECT CASE ne peut tester qu’une expression à la fois. On ne peut pas écrire la syntaxe suivante : select case ville and case fonction