Comment utiliser les conditions IF sur VBA

Les conditions IF sont parmi les concepts les plus fondamentaux en programmation.

Elles servent de base pour réaliser un grand nombre de choses, donc si vous comprenez ces conditions, vous êtes sur la bonne voie pour devenir un expert du VBA.

Les conditions servent à effectuer des actions en fonction de critères précis (même principe que la fonction SI sur Excel).

Si vous n'avez aucune expérience en programmation, cela ne pose aucun problème car nous allons tout voir de A à Z.

Obtenez votre fichier d'exercice gratuit

Le meilleur moyen d'apprendre à coder sur VBA est de le faire vous même.

J'ai donc ajouté un exemple gratuit afin que vous puissiez suivre les instructions et pratiquer en même temps. Téléchargez le avant de continuer.

Conditions IF-THEN sur VBA

Créer une condition IF-THEN est simple. La syntaxe est la suivante :

If [CONDITION] Then ' ==> Si condition vérifiée ALORS

[INSTRUCTIONS] '==> Instructions si vrai

End If 'Commande pour clore la condition

Remplacer [CONDITION] par la condition que vous voulez vérifier et [INSTRUCTIONS] par ce que vous voulez qu'Excel réalise.

Il est important de noter que la condition doit renvoyer un résultat VRAI ou FAUX.

Regardons tout de suite un exemple ensemble avec le fichier téléchargé plus haut.

Nous allons utiliser le VBA pour vérifier si dans une cellule (A1 par exemple), le nombre est pair ou non. Dans l'éditeur VBA, voici le code que nous utilisons :

Sub pair_impair()

Range("A2").Clear

'Commande pour vider le contenu
'de la cellule A2

If Range("A1") Mod 2 = 0 Then

''Si dans la cellule A1 le reste
'de la division par 2 est 0
'(donc le nombre est pair)

Range("A2").Value = ...

"Le nombre en A1 est pair"
'Alors on inscrit dans la
'cellule A2 que le nombre en A1
'est pair

    End If

End Sub

Nous obtenons le résultat suivant :

Bien sur c'était un exemple très simple. Vous pouvez faire des choses bien plus complexes.

Essayez maintenant de créer une condition IF-THEN à l'image de l'exemple ci-dessus et jouez sur les paramètres pour voir comment le code réagit.

Si vous avez des bugs ou des erreurs, essayez de les corriger tout seuls afin de vous approprier la syntaxe notamment. Sinon écrivez moi, je vous débloquerai!

Samy AMRI - Formateur

Conditions IF-THEN-ELSE sur VBA

Afin de rendre notre code un peu plus utile, nous pouvons ajouter des instructions pour le cas où la condition n'est pas remplie.

En effet, nous avions un message seulement quand le nombre dans la cellule A1 était pair.

Et si nous voulions gérer la situation où ce n'était pas le cas?

Pour cela nous allons ajouter l'instruction ELSE. La syntaxe devient alors la suivante :

If [CONDITION] Then ' ==> Si condition vérifiée ALORS

[INSTRUCTIONS] '==> Instructions si vrai

Else 'SINON

[INSTRUCTIONS] '==> Instructions si FAUX

End If 'Commande pour clore la condition

Reprenons notre code avec la commande ELSE en plus :

Sub pair_impair()

Range("A2").Clear

'Commande pour vider le contenu
'de la cellule A2

If Range("A1") Mod 2 = 0 Then

'Si dans la cellule A1 le reste
'de la division par 2 est 0
'(donc le nombre est pair)

Range("A2").Value = ...

"Le nombre en A1 est pair"
'Alors on inscrit dans la
'cellule A2 que le nombre en A1
'est pair

Else 'Sinon

Range("A2").Value = ... 
"Le nombre en A1 est impair"
'Alors on inscrit dans la
'cellule A2 que le nombre en A1
'est impair
   

End If

End Sub

Maintenant quand vous lancez la macro, vous obtenez un message quelque soit la parité du nombre dans la cellule A1.

Lancez le code dans une feuille Excel et essayez plusieurs valeurs dans la cellule A1.

Samy AMRI - Formateur

Conditions ELSEIF sur VBA

Dans beaucoup de cas, vous pouvez vouloir travailler sur plusieurs conditions et non pas une seule.

Pour cela nous allons ajouter l'instruction ELSEIF. La syntaxe devient alors la suivante :

If [CONDITION 1] Then ' ==> Si condition 1 vérifiée ALORS

[INSTRUCTIONS 1] '==> Instructions 1

ElseIf [CONDITION 2] Then 'SINON, Si condition 2 vérifiée ALORS

[INSTRUCTIONS 2] '==> Instructions 2

Else 'SINON

[INSTRUCTIONS 3] '==> Instructions 3

End If 'Commande pour clore la condition

Reprenons notre code avec la commande ELSEIF en plus :

Sub pair_impair()

Range("A2").Clear

'Commande pour vider le contenu
'de la cellule A2

If Range("A1") = 0 Then
'Si dans la cellule A1 le nombre
'est nul

Range("A2").Value = "Le nombre en A1 est 0"
'Alors on inscrit dans la
'cellule A2 que le nombre en A1
'est nul

ElseIf Range("A1") Mod 2 = 0 Then

'Si dans la cellule A1 le reste
'de la division par 2 est 0
'(donc le nombre est pair)

Range("A2").Value = "Le nombre en A1 est pair"

'Alors on inscrit dans la
'cellule A2 que le nombre en A1
'est pair

Else 'Sinon

Range("A2").Value = "Le nombre en A1 est impair"
'Alors on inscrit dans la
'cellule A2 que le nombre en A1
'est impair
   

End If

End Sub

Maintenant si on entre la valeur 0 dans la cellule A1, on obtient alors le résultat suivant :

Une chose importante à propos des conditions multiples à garder en tête :

VBA les parcourt un par un, et donc l'ordre des conditions est un élément important!

Par exemple, si nous avions écrit le code suivant :

Sub pair_impair()

Range("A2").Clear

'Commande pour vider le contenu
'de la cellule A2

   If Range("A1") Mod 2 = 0 Then
'Si dans la cellule A1 le reste
'de la division par 2 est 0
'(donc le nombre est pair)

Range("A2").Value =...
 "Le nombre en A1 est pair"
'Alors on inscrit dans la
'cellule A2 que le nombre en A1
'est pair

ElseIf Range("A1") = 0 Then
'Sinon, si dans la cellule A1
'le nombre est nul

Range("A2").Value = ...
"Le nombre en A1 est 0" 
'Alors on inscrit dans la
'cellule A2 que le nombre en A1
'est nul

   Else 'Sinon

Range("A2").Value = ...
"Le nombre en A1 est impair"
'Alors on inscrit dans la
'cellule A2 que le nombre en A1
'est impair
   

End If

End Sub

Avec ce code, vous n'aurez jamais inscrit en A2 que le nombre dans la cellule A1 est nul.

Pourquoi?

Car zéro est un nombre pair et donc Excel s'arrêtera à la première condition remplie : ici le fait que le nombre soit pair.

Cette exemple est un peu trivial je vous l'accorde mais cela a le mérite d'illustrer le problème.


Mon conseil : veillez à bien vérifier l'ordre des conditions que vous inscrivez afin d'avoir le résultat escompté.

Samy AMRI - Formateur

Une erreur commune

Quand vous programmez sur VBA, vous aurez des messages d'erreur. Vous devez apprendre à les gérer.

Une des erreurs les plus communes est la suivante :

Excel nous dit qu'il y a une erreur de compilation : "Block If without End If."

Il est important d'ajouter la commande End If car Excel ne reconnaît pas automatiquement quand votre Bloc conditionnel doit prendre fin.

Ecrivez juste End If à la fin de votre bloc conditionnel selon la syntaxe présentée plus haut.

Vous pouvez rencontrer d'autres erreurs mais celle-ci est une des plus communes et très facile à gérer.

De nombreux tutoriels Excel et VBA gratuits à venir et à découvrir

Pack Premium : VBA Décodé

Ce cours complet est le meilleur moyen pour devenir Excellent.

Formations Excel et VBA Gratuites adaptées à votre niveau

Résumons...

Les exemples présentés plus haut sont très utiles pour comprendre la logique des conditions SI.

Pour vous familiariser, il n' y a pas de secret, il faut pratiquer afin de maîtriser parfaitement ces concepts et réaliser des choses extraordinaires avec Excel.

Ce n'est pas très difficile, une fois avoir écrit quelques codes du même genre de ceux que nous avons vu ensembles, vous pourrez écrire des scripts bien plus complexes en toute autonomie.

Décoder le VBA c'est possible!

Le Pack "VBA Décodé" pour passer du stade de débutant ou confirmé à celui d'excellent!

Vous obtenez un accès à vie, du support, des cas pratiques, des centaines de leçons sous forme de vidéos et bien plus encore.