Excel VBA Select Case Statement - Expliqué avec des exemples

Excel VBA a la construction IF Then Else que vous pouvez utiliser pour analyser plusieurs conditions et exécuter des codes en fonction de ces conditions.

Une autre construction similaire qui vous permet de vérifier plusieurs conditions est la SÉLECTIONNER UN CAS déclaration.

Sélectionner un cas est utile lorsque vous avez trois conditions ou plus que vous souhaitez vérifier. Vous pouvez également l'utiliser avec deux conditions (mais je pense que If Then Else est plus facile à utiliser dans ces cas).

Un exemple simple où l'instruction Select Case est utile lorsque vous souhaitez obtenir la note d'un étudiant en fonction des notes qu'il a obtenues (voir un exemple plus loin dans ce didacticiel).

Remarque : tous les exemples de codes traités dans ce didacticiel sont destinés à être placés dans un module en VBA.

Sélectionner la syntaxe de la casse

Vous trouverez ci-dessous la syntaxe de Select Case dans Excel VBA :

Select Case Test_Expression Case Value_1 Bloc de code lorsque Test_Expression = Value_1 Case Value_2 Bloc de code lorsque Test_Expression = Value_2 Case Value_3 Bloc de code lorsque Test_Expression = Value_3 Case Else Bloc de code lorsqu'aucune des conditions de case n'est remplie Fin Select
  • Test_Expression : C'est l'expression dont nous analysons la valeur en utilisant différents cas (mieux expliqués avec les exemples ci-dessous).
  • Condition_1, Condition_2,… : Ce sont les conditions sur lesquelles l'expression textuelle est testée. S'il remplit la condition, alors le bloc de code pour la condition donnée est exécuté.

Pour chaque instruction Select Case que vous utilisez, vous devez utiliser l'instruction End Select.

Noter: Dès qu'une condition est remplie, VBA quitte la construction de cas de sélection. Donc, si vous avez cinq conditions et que la deuxième condition est remplie, VBA quittera Select Case - et le reste des conditions ne sera pas testé.

Sélectionnez des exemples de cas

Maintenant, pour mieux comprendre comment utiliser l'instruction Select Case dans VBA, passons en revue quelques exemples.

Notez que la plupart des exemples de ce didacticiel sont destinés à expliquer le concept. Ceux-ci peuvent ou non être la meilleure façon de faire le travail.

Commençons par un exemple simple pour voir comment Select Case nous permet de vérifier les conditions.

Exemple 1 - Vérifiez les nombres

Dans l'exemple ci-dessous, le code demande à l'utilisateur d'entrer n'importe quel nombre entre 1 et 5, puis affiche une boîte de message avec le numéro que l'utilisateur a entré.

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox("Veuillez saisir un nombre entre 1 et 5") Select Case UserInput Case 1 MsgBox "Vous avez saisi 1" Case 2 MsgBox "Vous avez saisi 2" Case 3 MsgBox "Vous avez saisi 3" Case 4 MsgBox "Vous avez entré 4" Case 5 MsgBox "Vous avez entré 5" End Select End Sub

Notez que ce code est loin d'être utile et n'est même pas infaillible. Par exemple, si vous entrez 6 ou n'importe quelle chaîne, cela ne fera rien. Mais comme je l'ai mentionné, mon intention ici est de montrer comment fonctionne Select Case.

Exemple 2 - Utilisation de Select Case avec IS Condition

Vous pouvez utiliser une condition IS avec la construction Select Case pour vérifier la valeur des nombres.

Le code ci-dessous vérifie si le nombre d'entrée est supérieur à 100 ou non.

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox("Veuillez entrer un nombre") Select Case UserInput Case Is = 100 MsgBox "Vous avez entré un nombre supérieur (ou égal à) à) 100" End Select End Sub

Exemple 3 - Utilisation de Case Else pour tout attraper

Dans l'exemple ci-dessus, j'ai utilisé deux conditions (inférieures à 100 ou supérieures ou égales à 100).

Au lieu du deuxième cas avec une condition, vous pouvez également utiliser Case Else.

Case Else agit comme un fourre-tout et tout ce qui n'entre dans aucun des cas précédents est traité par Case Else.

Vous trouverez ci-dessous un exemple de code où j'ai utilisé Case Else :

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox("Veuillez saisir un nombre") Select Case UserInput Case Is < 100 MsgBox "Vous avez saisi un nombre inférieur à 100" Case Else MsgBox "Vous avez saisi un nombre supérieur (ou égal à) ) 100" End Select End Sub

Exemple 4 - Utilisation d'une plage de nombres

Dans Select Case, vous pouvez également rechercher une plage de nombres.

Le code ci-dessous demande une entrée et affiche une boîte de message en fonction de la valeur.

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox("Veuillez saisir un nombre entre 1 et 100") Select Case UserInput Case 1 à 25 MsgBox "Vous avez saisi un nombre inférieur à 25" Case 26 à 50 MsgBox "Vous avez saisi un nombre entre 26 et 50" Case 51 à 75 MsgBox "Vous avez saisi un nombre entre 51 et 75" Case 75 à 100 MsgBox "Vous avez saisi un nombre supérieur à 75" End Select End Sub

Exemple 5 - Obtenez la note en fonction des notes obtenues

Jusqu'à présent, nous avons vu des exemples de base (qui ne sont pas vraiment utiles dans le monde pratique).

Voici un exemple plus proche d'un exemple concret où vous pouvez utiliser Select Case dans Excel VBA.

Le code suivant vous donnera la note qu'un étudiant obtient en fonction des notes d'un examen.

Sub Grade() Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox("Enter Marks") Select Case StudentMarks Case Is < 33 FinalGrade = "F" Case 33 to 50 FinalGrade = "E" Case 51 to 60 FinalGrade = "D " Case 60 à 70 FinalGrade = "C" Case 70 à 90 FinalGrade = "B" Case 90 à 100 FinalGrade = "A" End Select MsgBox "La note est " & FinalGrade End Sub

Le code ci-dessus demande à l'utilisateur les notes et, en fonction de celui-ci, affiche une boîte de message avec la note finale.

Dans le code ci-dessus, j'ai spécifié toutes les conditions - pour les notes 0 - 100.

Une autre façon d'utiliser Select Case est d'utiliser un Case Else à la fin. Ceci est utile lorsque vous avez pris en compte toutes les conditions et que vous spécifiez ensuite ce qu'il faut faire lorsqu'aucune des conditions n'est remplie.

Le code ci-dessous est une variation du code Grade avec un changement mineur. En fin de compte, il a une instruction Case else, qui sera exécutée lorsqu'aucune des conditions ci-dessus n'est vraie.

Sub CheckOddEven() Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox("Enter Marks") Select Case StudentMarks Case Is < 33 FinalGrade = "F" Case 33 to 50 FinalGrade = "E" Case 51 to 60 FinalGrade = "D " Case 60 à 70 FinalGrade = "C" Case 70 à 90 FinalGrade = "B" Case Else FinalGrade = "A" End Select MsgBox "The Grade is " & FinalGrade End Sub

Exemple 6 - Création d'une fonction personnalisée (UDF) à l'aide de Select Case

Dans l'exemple ci-dessus, le code a demandé à l'utilisateur la saisie des notes.

Vous pouvez également créer une fonction personnalisée (fonction définie par l'utilisateur) qui peut être utilisée comme n'importe quelle fonction de feuille de calcul ordinaire et qui renverra la note des étudiants.

Vous trouverez ci-dessous le code qui créera la formule personnalisée :

Fonction GetGrade(StudentMarks As Integer) Dim FinalGrade As String Select Case StudentMarks Case Is < 33 FinalGrade = "F" Case 33 à 50 FinalGrade = "E" Case 51 à 60 FinalGrade = "D" Case 60 à 70 FinalGrade = "C" Case 70 à 90 FinalGrade = "B" Case Else FinalGrade = "A" End Select GetGrade = FinalGrade End Function

Une fois que vous avez ce code dans le module, vous pouvez utiliser la fonction GetGrade dans la feuille de calcul comme indiqué ci-dessous.

Exemple 7 - Vérifier IMPAIR / PAIR avec Select Case

Vous trouverez ci-dessous un exemple de code où je vérifie si le nombre de la cellule A1 est pair ou impair.

Sub CheckOddEven() CheckValue = Range("A1").Value Select Case (CheckValue Mod 2) = 0 Case True MsgBox "Le nombre est pair" Case False MsgBox "Le nombre est impair" End Select End Sub

Exemple 8 - Vérification du jour de la semaine/du week-end (conditions multiples)

Vous pouvez également utiliser Sélectionner la casse pour vérifier plusieurs valeurs dans la même casse.

Par exemple, le code ci-dessous utilise la date actuelle pour indiquer si aujourd'hui est un jour de semaine ou de week-end (où les jours de week-end sont le samedi et le dimanche)

Sub CheckWeekday() Select Case Weekday(Now) Case 1, 7 MsgBox "Aujourd'hui est un week-end" Case Else MsgBox "Aujourd'hui est un jour de semaine" End Select End Sub

Dans le code ci-dessus, nous vérifions deux conditions (1 et 7) dans le même cas.

Remarque : la fonction Jour de la semaine renvoie 1 pour dimanche et 7 pour samedi.

Exemple 9 - Instructions de cas de sélection imbriquées

Vous pouvez également imbriquer une instruction Select Case dans une autre.

Vous trouverez ci-dessous un code qui vérifie si un jour est un jour de semaine ou un week-end, et si c'est un week-end, il affichera si c'est un samedi ou un dimanche.

Sub CheckWeekday() Select Case Weekday(Now) Case 1, 7 Select Case Weekday(Now) Case 1 MsgBox "Aujourd'hui est dimanche" Case Else MsgBox "Aujourd'hui est samedi" End Select Case Else MsgBox "Aujourd'hui est un jour de semaine" End Select End Sous

Dans le code ci-dessus, j'ai imbriqué le Select Case pour vérifier si le week-end est un samedi ou un dimanche.

Remarque : L'exemple ci-dessus sert à expliquer le concept. Ce n'est pas le meilleur moyen ni le plus pratique de connaître le jour de la semaine/le week-end.

Exemple 10 - Vérification de la chaîne de texte avec Select Case

Vous pouvez vérifier des chaînes spécifiques à l'aide de Select Case, puis exécuter du code en fonction de celle-ci.

Dans l'exemple de code ci-dessous, il demande à l'utilisateur d'entrer le nom de son service et affiche le nom de la personne avec laquelle il doit se connecter pour l'intégration.

Sub OnboardConnect() Dim Department As String Department = InputBox("Entrez le nom de votre département") Select Case Department Case "Marketing" MsgBox "Veuillez vous connecter avec Bob Raines pour l'intégration" Case "Finance" MsgBox "Veuillez vous connecter avec Patricia Cruz pour l'intégration" Case "HR" MsgBox "Veuillez vous connecter avec Oliver Rand pour l'intégration" Case "Admin" MsgBox "Veuillez vous connecter avec Helen Hume pour l'intégration" Case Else MsgBox "Veuillez vous connecter avec Tony Randall pour l'intégration" End Select End Sub

J'espère que tous les exemples ci-dessus ont été utiles pour comprendre le concept et l'application de Select Case dans Excel VBA.

Vous aimerez peut-être aussi les didacticiels VBA suivants :

  • Boucles Excel VBA - Pour le suivant, faire pendant, faire jusqu'à, pour chacun.
  • Pour la prochaine boucle dans Excel VBA.
  • Comment enregistrer une macro dans Excel.

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave