🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

VBA Select Case dans Excel — 6 exemples (plages, Is, valeurs multiples)

|

VBA Select Case dans Excel — 6 exemples (plages, Is, valeurs multiples)

Testé sur : Excel 365 v2509 · Excel 2021 · Excel 2019 · dernière vérification le 05/06/2026

En brefSelect Case teste une variable contre de nombreuses valeurs possibles — plus net qu'une pile de ElseIf. Copiez et adaptez :

Sub CalculerNote()
    Dim points As Long
    points = Range("A1").Value

    Select Case points
        Case Is >= 90:  Range("B1").Value = "Excellent"
        Case 75 To 89:  Range("B1").Value = "Bien"
        Case 60 To 74:  Range("B1").Value = "Passable"
        Case Else:      Range("B1").Value = "Échoué"
    End Select
End Sub

Voyez comme c'est plus lisible que quatre lignes de ElseIf. Ce guide couvre chaque style de correspondance : valeurs exactes, listes, plages, comparaisons et le coup de maître Select Case True.

Pourquoi Select Case bat un mur de ElseIf

Quand vous testez la même variable contre plusieurs valeurs, ElseIf devient vite bruyant. Select Case nomme la variable une seule fois, aligne les options et s'arrête au premier résultat — plus lisible, plus facile à étendre et légèrement plus rapide.

Comment ça marche

VBA évalue l'expression de test une fois, puis vérifie chaque Case de haut en bas. Le premier qui correspond l'emporte — les autres sont ignorés. Case Else capture tout ce qui n'a pas été trouvé (toujours en dernier).

Exemple 1 — Valeurs exactes et listes séparées par des virgules

Un seul Case peut contenir plusieurs valeurs séparées par des virgules :

Sub ClasserPays()
    Dim pays As String
    pays = Range("A2").Value

    Select Case pays
        Case "France", "Allemagne", "Italie", "Espagne"
            Range("B2").Value = "Europe"
        Case "Japon", "Corée", "Chine"
            Range("B2").Value = "Asie"
        Case Else
            Range("B2").Value = "Autre"
    End Select
End Sub

Exemple 2 — Plages numériques avec To

To couvre une plage inclusive — parfait pour les paliers et les tranches :

Select Case montantCommande
    Case 0 To 99.99:      remise = 0
    Case 100 To 499.99:   remise = 0.05
    Case 500 To 999.99:   remise = 0.1
    Case Else:            remise = 0.15
End Select

Exemple 3 — Is avec les opérateurs de comparaison

Quand une plage ne suffit pas, Is autorise >, <, >=, <=, <> :

Select Case temperature
    Case Is < 0:    statut = "Gel"
    Case Is <= 15:  statut = "Froid"
    Case Is <= 25:  statut = "Doux"
    Case Else:      statut = "Chaud"
End Select

L'ordre compte : comme le premier résultat l'emporte, listez vos cas de la borne la plus restrictive vers le haut.

Exemple 4 — Mélanger listes, plages et Is dans un seul bloc

Select Case score
    Case 0, 1, 2:        note = "Faible"         ' une liste
    Case 3 To 6:         note = "Moyen"          ' une plage
    Case Is >= 7:        note = "Bon"            ' une comparaison
    Case Else:           note = "Non noté"
End Select

Les trois styles de correspondance coexistent librement. C'est cette souplesse qui fait que Select Case passe à l'échelle là où les chaînes de ElseIf deviennent illisibles.

Exemple 5 — L'astuce Select Case True

Besoin de tester des conditions sur des variables différentes, tout en gardant la disposition propre des Case ? Mettez l'expression de test à True :

Select Case True
    Case age < 18 And aUnTuteur:    tarif = "Enfant"
    Case age >= 65:                 tarif = "Senior"
    Case estEtudiant And age < 26:  tarif = "Étudiant"
    Case Else:                      tarif = "Adulte"
End Select

Chaque Case est désormais une expression booléenne complète. C'est la façon idiomatique en VBA de garder lisible une logique à plusieurs variables — le seul endroit où Select Case dépasse une variable unique.

Exemple 6 — Case Else comme filet de sécurité

Incluez toujours Case Else, ne serait-ce que pour attraper les surprises :

Select Case Weekday(Date)
    Case vbMonday To vbFriday:  MsgBox "Jour ouvré"
    Case vbSaturday, vbSunday:  MsgBox "Week-end"
    Case Else:                  MsgBox "Valeur de date inattendue"   ' ne devrait jamais arriver
End Select

Un Case Else qui « ne devrait jamais s'exécuter » est la façon d'attraper les données imprévues au lieu de ne rien faire en silence.

Select Case ou If/ElseIf — lequel choisir

Situation À utiliser
Tester une variable contre 3 valeurs ou plus Select Case
Plages de valeurs (1–10, 11–20…) Select Case ... To
Conditions sur des variables différentes If...ElseIf ou Select Case True
Une ou deux issues seulement If...Else

Règle d'or : même variable, beaucoup d'issues → Select Case. Variables différentes, peu d'issues → If.

Erreurs courantes (et la solution)

Deux cas se chevauchent et le mauvais se déclenche — Rappelez-vous : le premier résultat l'emporte. Case Is < 100 avant Case Is < 50 signifie que les valeurs sous 50 n'atteignent jamais le second cas. Ordonnez du plus précis au plus général.

Case x > 5 ne fait rien — Une comparaison nue est interdite ; écrivez Case Is > 5. Le mot-clé Is est obligatoire pour comparer.

La correspondance de texte échoue sur la casseSelect Case distingue la casse par défaut. Ajoutez Option Compare Text en haut du module, ou normalisez avec Select Case LCase(pays).

Arrêtez d'entretenir la logique de branchement à la main

Select Case est plus propre que ElseIf, mais ça reste du code à tester, déboguer et mettre à jour chaque fois que les règles métier changent. ExcelMaster Agent transforme la règle elle-même en interface — « répartis la colonne A : sous 100 = pas de remise, 100–499 = 5 %, 500+ = 10 % » — et génère la logique, plages et cas limites compris. Essayer gratuitement →

Guides associés

FAQ

VBA Select Case peut-il tester une plage de valeurs ? Oui — Case 1 To 10 correspond à toute valeur de 1 à 10 incluse. Vous pouvez combiner plages, listes et comparaisons Is dans le même bloc.

Comment tester plusieurs valeurs dans un seul cas ? Séparez-les par des virgules : Case "A", "B", "C" correspond à l'une des trois. Plages et comparaisons peuvent rejoindre la liste : Case 1, 2, 5 To 9.

Quand utiliser Select Case plutôt que If ? Quand vous testez la même variable contre trois valeurs ou plus. Pour une ou deux issues, ou des conditions sur des variables différentes, If...ElseIf suffit.

VBA Select Case est-il plus rapide que ElseIf ? Marginalement, car l'expression de test n'est évaluée qu'une fois. Le vrai gain est la lisibilité et la maintenabilité, pas la vitesse brute.