Excel · VBA · A3iformations

Les conditions en VBA : If Then, Else, ElseIf et Select Case

Une macro doit souvent choisir : appliquer une remise si le montant dépasse un seuil, afficher « certifié » ou « attestation », attribuer un niveau selon un score. VBA dispose pour cela de deux structures. If … Then … End If, avec ses variantes Else et ElseIf, teste une ou plusieurs conditions ; Select Case compare une même valeur à une liste de cas. Les exemples utilisent les scores de la certification TOSA (1 à 1 000). Voir aussi les procédures et fonctions et MsgBox et InputBox.

If … Then … End IfSi
ElseSinon
ElseIfSinon si
Select CaseSelon le cas
1

If … Then … End If

La condition est une expression qui vaut Vrai ou Faux, construite avec les opérateurs =, <> (différent), <, <=, >, >=. Si elle est vraie, les instructions entre Then et End If s’exécutent ; sinon VBA passe directement à la ligne qui suit End If. Plusieurs conditions se combinent avec And (toutes vraies), Or (au moins une vraie) et Not (inverse). Pour une seule instruction, la forme sur une ligne se passe de End If.

Simulateur : remise de 5 % si la condition est vraie
If Then

      
Fenêtre d’exécution

And n’est pas « paresseux »VBA évalue toujours les deux côtés d’un And ou d’un Or. If n <> 0 And total / n > 10 provoque une division par zéro quand n vaut 0 : imbriquez deux If.
ParenthèsesMélangez And et Or avec des parenthèses explicites : If (a Or b) And c Then. Sans elles, And est évalué avant Or, et la lecture devient ambiguë.
2

If … Then … Else … End If

Else ajoute le chemin « sinon » : quand la condition est fausse, ce sont les instructions entre Else et End If qui s’exécutent. Exactement un des deux blocs s’exécute, jamais les deux, jamais aucun. C’est la structure d’une alternative : certifié ou non, payé ou impayé, stock suffisant ou à commander.

Simulateur : certification TOSA à partir de 351 points

      
MsgBox

IIf pour une valeurresultat = IIf(score >= 351, "Certifié", "Attestation") choisit une valeur en une ligne. Attention : comme And, IIf évalue toujours ses deux branches.
Indenter le codeDécalez d’une tabulation les instructions de chaque bloc : If, Else et End If alignés, contenu en retrait. Les erreurs « If sans End If » deviennent visibles.
3

If … Then … ElseIf … Then … Else … End If

Pour plus de deux cas, on enchaîne les ElseIf. VBA teste les conditions de haut en bas et exécute le bloc de la première condition vraie ; les suivantes ne sont pas évaluées. Le Else final, facultatif, traite tous les autres cas. L’ordre des tests est donc essentiel : pour des seuils, on part du plus exigeant. Barème TOSA : Initial (1 à 350), Basique (351 à 550), Opérationnel (551 à 725), Avancé (726 à 875), Expert (876 à 1 000).

Simulateur : niveau TOSA selon le score

      
Fenêtre d’exécution

ElseIf en un motElseIf s’écrit attaché. Else If en deux mots ouvre un nouveau If imbriqué qui réclame son propre End If : erreur « Block If sans End If ».
Tester les bornesVérifiez toujours les valeurs limites (350, 351, 550, 551…) : c’est là que se cachent les erreurs entre > et >=.
4

Select Case

Quand on compare une même valeur à plusieurs possibilités, Select Case est plus lisible qu’une série d’ElseIf. Chaque Case accepte une valeur, une liste (Case "Excel", "Word"), une plage (Case 351 To 550) ou une comparaison (Case Is >= 5000). Comme pour ElseIf, seul le premier Case qui correspond s’exécute ; Case Else traite le reste. La structure se termine par End Select.

Simulateur : trois formes de Case

      
Fenêtre d’exécution

Select Case TruePour des conditions portant sur des variables différentes : Select Case True puis Case montant >= 1000 And nb >= 3. Le premier Case qui vaut Vrai s’exécute.
If ou Select Case ?Une seule valeur comparée à de nombreux cas : Select Case. Des conditions combinant plusieurs variables avec And et Or : If … ElseIf.
Exercice : classer les résultats TOSA d’un groupe

Classeur d’exercice (Énoncé et Corrigé)

  1. Enregistrez le classeur en .xlsm et collez le code de la feuille « Code VBA » dans un module standard.
  2. Exécutez Classer : pour chaque stagiaire, la macro écrit le niveau (If … ElseIf), la certification (If … Else) et la catégorie de la formation (Select Case).
  3. Vérifiez les cas limites : Petit (351 points), Richard (550) et Moreau (726).
  4. Dans la fenêtre d’exécution, testez la fonction Remise : ? Remise(1400, 4) et ? Remise(1750, 2).
  5. Répondez aux questions de la feuille Contrôle.
A3iformations · Organisme certifié Qualiopi · Centre de passage TOSA Interface Excel Microsoft 365 en français