If Then Else
Une macro devient vraiment utile quand elle sait décider : colorer un retard en rouge, ignorer une ligne vide, appliquer une remise au-delà d'un certain montant. If Then Else est l'instruction qui lui donne ce pouvoir.
Télécharger la fiche PDF gratuiteSans inscription, mise en page prête à imprimer01Définition
If Then Else exécute un bloc d'instructions seulement si une condition est vraie, et éventuellement un autre bloc si elle est fausse.
02Syntaxe
' Sur une seule ligne If montant > 1000 Then remise = 0.05 ' En bloc If montant > 1000 Then remise = 0.05 Else remise = 0 End If ' Avec plusieurs cas If montant >= 5000 Then remise = 0.1 ElseIf montant >= 1000 Then remise = 0.05 Else remise = 0 End If
VBA teste les conditions dans l'ordre et s'arrête à la première vraie. Placez donc la condition la plus exigeante en premier.
03Opérateurs de comparaison et logiques
| Opérateur | Signification |
|---|---|
| = | égal à |
| <> | différent de |
| > , < | supérieur, inférieur |
| >= , <= | supérieur ou égal, inférieur ou égal |
| And | les deux conditions sont vraies |
| Or | au moins une condition est vraie |
| Not | inverse la condition |
04Exemples à copier
Signaler les factures en retard
Sub SignalerRetards() Dim i As Long For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 4).Value < Date And Cells(i, 5).Value <> "Payée" Then Cells(i, 4).Interior.Color = RGB(252, 228, 214) End If Next i End Sub
Vérifier une saisie
If Range("B2").Value = "" Or Not IsNumeric(Range("B2").Value) Then MsgBox "Saisissez un montant en B2.", vbExclamation Exit Sub End If
05Pièges à éviter
Un If écrit en bloc doit se fermer par End If, sinon VBA refuse de lancer la macro : « Bloc If sans End If ».
Par défaut, "Paris" et "paris" sont différents pour VBA. Comparez avec LCase(Cells(i, 1).Value) = "paris" pour ignorer la casse.
Avec And, VBA calcule les deux côtés même si le premier est faux. If Not c Is Nothing And c.Value > 0 plante quand c vaut Nothing : séparez en deux If imbriqués.
Au-delà de trois ou quatre cas sur la même valeur, Select Case est beaucoup plus lisible.
06Questions fréquentes
Comment écrire une condition If Then Else en VBA ?
If Then Else exécute un bloc d'instructions seulement si une condition est vraie, et éventuellement un autre bloc si elle est fausse.
Quel est le piège le plus fréquent avec If Then Else ?
Oublier End If. Un If écrit en bloc doit se fermer par End If, sinon VBA refuse de lancer la macro : « Bloc If sans End If ».
La fiche « If Then Else » est-elle gratuite ?
Oui. La fiche est en accès libre et gratuit, sans inscription : vous pouvez la lire en ligne et télécharger sa version PDF. Elle fait partie du cours VBA gratuit de mesetudesdecas.fr, qui compte 21 fiches.
Passez de la fiche à la mise en situation
Les études de cas mesetudesdecas.fr placent vos apprenants face à un vrai besoin d'entreprise. L'étude de cas XL-05 fait automatiser un devis commercial de bout en bout, macros comprises, avec énoncé, corrigé et pas-à-pas du formateur.
Découvrir l'étude de cas XL-05Toutes les fiches du cours VBA gratuit
Voir aussi le cours gratuit sur les formules Excel
Fiche V1.2 | Dernière mise à jour : 29/10/2026 | Clément Delobel, formateur Excel et VBA