If Then Else Statement dans Excel VBA (expliqué avec des exemples)

Dans Excel VBA, l'instruction IF Then Else vous permet de vérifier une condition et d'effectuer une action en conséquence.

Ceci est extrêmement utile dans de nombreuses situations, comme nous le verrons dans les exemples plus loin dans ce didacticiel.

Pour vous donner un exemple simple, supposons que vous ayez une liste de notes dans Excel et que vous vouliez mettre en évidence tous les étudiants qui ont obtenu un A. Maintenant, si je vous demande de le faire manuellement, vous vérifierez la note de chaque étudiant et si c'est un A, vous le surlignerez, et si ce n'est pas le cas, vous le laisserez tel quel.

La même logique peut être construite en VBA en utilisant le Si alors sinon déclaration également (et bien sûr faire beaucoup plus que simplement mettre en évidence les notes).

Dans ce didacticiel, je vais vous montrer différentes manières d'utiliser la construction 'If Then Else' dans Excel VBA, ainsi que quelques exemples pratiques en action.

Mais avant d'entrer dans les détails, permettez-moi de vous donner la syntaxe de l'instruction « IF Then Else ».

Si vous souhaitez apprendre VBA en toute simplicité, consultez mon Formation en ligne Excel VBA.

Syntaxe - IF Then Else

Vous trouverez ci-dessous la syntaxe générique de la construction If Then Else en VBA

IF condition Then true_code [Else false_code]

Ou alors

IF condition Then true_code Else false_code End IF

Notez que la partie Else de cette instruction est facultative.

Maintenant, si vous vous demandez quelle est la différence entre les deux syntaxes, permettez-moi de clarifier.

La première syntaxe est une simple instruction IF THEN ELSE d'une ligne où vous n'avez pas besoin d'utiliser l'instruction END IF.

Cependant, dans la deuxième syntaxe, la partie true_code est dans la deuxième ligne. Ceci est utile lorsque le code que vous devez exécuter au cas où la condition IF est vraie est long et se compose de plusieurs lignes.

Lorsque vous divisez l'instruction IF en plusieurs lignes, vous devez indiquer à VBA où se termine la construction IF Then.

Par conséquent, vous devez utiliser l'instruction End IF.

Si vous n'utilisez pas End IF lorsque cela est nécessaire, VBA vous affichera une erreur - "Bloquer IF sans END IF"

Exemples d'utilisation de l'instruction IF Then dans VBA

Pour vous donner une idée du fonctionnement de l'instruction IF-THEN dans VBA, permettez-moi de commencer par quelques exemples de base (certains exemples pratiques et plus utiles sont traités plus loin dans ce didacticiel).

Supposons que vous ayez le score d'un étudiant dans la cellule A1 et que vous vouliez vérifier si l'étudiant a réussi l'examen ou non (le seuil de réussite est de 35).

Ensuite, vous pouvez utiliser le code suivant :

Sub CheckScore() If Range("A1").Value >=35 Then MsgBox "Pass" End Sub

Le code ci-dessus a une seule ligne d'instruction IF qui vérifie la valeur dans la cellule A1.

S'il est supérieur à 35, il affiche le message - "Passer".

S'il est inférieur à 35, rien ne se passe.

Mais que se passe-t-il si vous souhaitez afficher un message dans les deux cas, qu'un étudiant ait réussi ou échoué à l'examen.

Le code ci-dessous ferait ceci:

Sub CheckScore() If Range("A1").Value >= 35 Then MsgBox "Pass" Else MsgBox "Fail" End If End Sub

Le code ci-dessus utilise l'instruction IF ainsi que l'instruction ELSE pour exécuter deux conditions différentes. Lorsque le score est supérieur (ou égal à) 35, la condition IF est vraie et le code juste en dessous est exécuté (tout avant l'instruction Else).

Mais lorsque la condition IF est FALSE, le code saute à la partie Else et exécute le bloc de code qu'il contient.

Notez que lorsque nous utilisons une seule ligne de l'instruction IF Then, nous n'avons pas besoin d'utiliser End IF. Mais lorsque nous le divisons en plusieurs lignes, nous devons utiliser l'instruction End If.

Imbriqué IF Then (plusieurs instructions IF Then)

Jusqu'à présent, nous avons utilisé une seule instruction IF Then.

Si vous avez plusieurs conditions à vérifier, vous pouvez utiliser :

  • Conditions SI multiples
  • Instruction If Then Else
  • IF Then ElseIf Else construire

Laissez-moi vous montrer en quoi ceux-ci diffèrent et comment l'utiliser dans Excel VBA.

Plusieurs instructions IF Then

Prenons le même exemple d'utilisation du score d'un élève.

Si l'élève obtient un score inférieur à 35, le message à afficher est « Echec », si le score est supérieur ou égal à 35, le message à afficher est « Réussite ».

Nous pouvons utiliser le code ci-dessous pour y parvenir :

Sub CheckScore() If Range("A1").Value = 35 Then MsgBox "Pass" End Sub

Vous pouvez utiliser plusieurs instructions IF Then comme indiqué ci-dessus. Bien que cela fonctionne, ce n'est pas un exemple de bon codage (comme vous le verrez les alternatives ci-dessous).

Si vous décidez de l'utiliser, n'oubliez pas que ces déclarations doivent être soit indépendantes, soit mutuellement exclusives. La chose importante à savoir ici est que dans la construction ci-dessus, toutes les instructions IF sont évaluées et celles où la condition est vraie, le code est exécuté.

Ainsi, même si la première instruction IF est correcte, la seconde sera toujours évaluée.

IF Then Else Statement

Supposons que cette fois, au lieu d'afficher simplement le message Réussite/Échec, nous ayons une condition supplémentaire.

Si l'élève obtient un score inférieur à 35, le message à afficher est « Echec », si le score est supérieur ou égal à 35, le message à afficher est « Réussi » et si le score est supérieur à 80, le message à afficher est « Pass, avec distinction ».

Nous pouvons utiliser le code ci-dessous pour y parvenir :

Sub CheckScore() If Range ("A1").Value < 35 Then MsgBox "Fail" Else If Range ("A1").Value < 80 Then MsgBox "Pass" Else MsgBox "Pass, with Distinction" End If End If End Sous

Dans le code ci-dessus, nous avons utilisé plusieurs instructions IF (imbriquées IF Then) à l'aide de Else.

Il existe donc une construction « IF Then Else » dans une construction « IF Then Else ». Ce type d'imbrication vous permet de vérifier plusieurs conditions et d'exécuter le bloc de code approprié.

IF Then ElseIf Else Statement

Le code ci-dessus (que nous avons vu dans la section précédente) peut être optimisé davantage en utilisant l'instruction ElseIf.

Voici ce que nous essayons de faire - Si l'élève obtient un score inférieur à 35, le message à afficher est « Echec », si le score est supérieur ou égal à 35, le message à afficher est « Réussite », et si le score est supérieur à 80, le message à afficher est « Réussi, avec distinction ».

Sub CheckScore() If Range ("A1").Value < 35 Then MsgBox "Fail" ElseIf Range ("A1").Value < 80 Then MsgBox "Pass" Else MsgBox "Pass, with Distinction" End If End Sub

Le code ci-dessus utilise ElseIf, ce qui nous permet de conserver toutes les conditions dans une seule instruction IF Then.

Utilisation de AND et OR dans IF Then Else

Jusqu'à présent dans ce didacticiel, nous n'avons vérifié qu'une seule condition à la fois.

Cependant, lorsque vous avez plusieurs conditions dépendantes, vous pouvez utiliser l'instruction AND ou OR avec les conditions IF.

Vous trouverez ci-dessous la syntaxe de l'utilisation de la condition AND/OR avec l'instruction IF Then.

SI Condition1 AND Condition2 Then true_code Sinon false_code Fin SI

Dans le code ci-dessus, uniquement lorsque Condition1 et Condition2 sont remplies, le true_code est exécuté. Même si l'une des conditions est fausse, il exécutera le false_code.

Avec OR, même si l'une des conditions est vraie, il exécutera le true_code. Ce n'est que lorsque toutes les conditions sont fausses qu'il exécute le false_code.

Voyons maintenant comment les instructions AND et OR fonctionnent avec la construction IF Then Else.

Supposons que vous ayez les scores pour deux matières au lieu d'une et que vous vouliez vérifier les conditions suivantes :

  • Échouer - Lorsque le score est inférieur à 35 dans l'une des matières.
  • Passer - Lorsque le score est supérieur ou égal à 35, mais inférieur à 80 dans les deux matières.
  • Réussir avec distinction - Lorsque le score est supérieur à 35 dans les deux matières et supérieur ou égal à 80 dans l'une ou les deux matières.

Voici le code qui fera cela :

Sub CheckScore() If Range ("A1").Value < 35 Ou Range ("B1").Value < 35 Then MsgBox "Fail" ElseIf Range ("A1").Value < 80 And Range ("B1"). Value < 80 Then MsgBox "Pass" Else MsgBox "Pass, with Distinction" End If End Sub

Le code ci-dessus utilise à la fois les instructions OR et AND.

Vous pouvez également écrire ce même code avec une légère modification (en utilisant OR au lieu de AND).

Sub CheckScore() If Range("A1").Valeur < 35 Ou Range("B1").Valeur 80 Ou Range("B1").Valeur > 80 Then MsgBox "Pass, with Distinction" Else MsgBox "Pass" End Si End Sub

Les deux codes VBA ci-dessus vous donneront le même résultat. Personnellement, je préfère le premier car il a un flux logique de vérification des scores (mais ce n'est que moi).

Utilisation de Différent de dans Si Alors

Dans tous les exemples ci-dessus, nous avons utilisé les conditions qui vérifient si une valeur est égale ou non à une valeur spécifiée.

Vous pouvez également utiliser des codes similaires lors de la vérification lorsque la valeur n'est pas égale à une valeur spécifiée dans le code VBA. Pas égal à représenté par Excel VBA.

Pour voir un exemple pratique d'utilisation de , consultez l'exemple 1 ci-dessous.

Utilisation de If Then Else avec des boucles en VBA

Jusqu'à présent, nous avons parcouru quelques exemples qui sont bons pour comprendre le fonctionnement des instructions « IF-THEN » dans VBA, cependant, ne sont pas utiles dans le monde pratique.

Si j'ai besoin de noter des étudiants, je peux facilement le faire à l'aide des fonctions Excel.

Voyons donc quelques exemples utiles et pratiques qui peuvent vous aider à automatiser certaines choses et à être plus efficace.

Exemple 1 - Enregistrer et fermer tous les classeurs à l'exception du classeur actif

Si vous avez beaucoup de classeurs ouverts et que vous souhaitez tous les fermer rapidement, à l'exception du classeur actif, vous pouvez utiliser le code ci-dessous,

Sub SaveCloseAllWorkbooks() Dim wb As Workbook For Each wb In Workbooks On error resume next If wb.Name ActiveWorkbook.Name Then wb.Save wb.Close End If Next wb End Sub

Le code ci-dessus enregistrerait et fermerait tous les classeurs (sauf le classeur actif).

Il utilise la boucle For Next pour parcourir la collection de tous les classeurs ouverts et vérifie le nom à l'aide de la condition IF.

Si le nom n'est pas le même que celui du classeur actif, il l'enregistre et le ferme.

S'il y a un code VBA dans l'un des classeurs et que vous ne l'avez pas enregistré au format .xls ou .xlsm, vous verrez un avertissement (car les codes vba sont perdus lorsque vous l'enregistrez au format .xlsx).

Exemple 2 - Mettez en surbrillance les cellules avec des valeurs négatives

Supposons que vous ayez une colonne pleine de nombres et que vous souhaitiez rapidement mettre en surbrillance toutes les cellules avec des valeurs négatives en rouge, vous pouvez le faire en utilisant le code ci-dessous.

Sub HighlightNegativeCells() Dim Cll As Range pour chaque Cll In Selection If Cll.Value < 0 Then Cll.Interior.Color = vbRed Cll.Font.Color = vbWhite End If Next Cll End Sub

Le code ci-dessus utilise la boucle For Each et vérifie chaque cellule de la sélection que vous avez effectuée. Si la cellule a une valeur négative, elle est surlignée en rouge avec une couleur de police blanche.

Exemple 3 - Masquer toute la feuille de calcul à l'exception de la feuille de calcul actuelle

Si vous souhaitez masquer rapidement toutes les feuilles de calcul à l'exception de la feuille active, vous pouvez utiliser le code ci-dessous :

Sub HideAllExceptActiveSheet() Dim ws As Worksheet pour chaque ws dans ThisWorkbook.Worksheets Si ws.Name ActiveSheet.Name Alors ws.Visible = xlSheetHidden Next ws End Sub

Le code ci-dessus utilise la boucle For Each pour parcourir une collection de feuilles de calcul. Il vérifie le nom de chaque feuille de calcul et le masque s'il ne s'agit pas de la feuille de calcul active.

Exemple 4 - Extraire la partie numérique d'une chaîne alphanumérique

Si vous avez des chaînes alphanumériques dans les cellules et que vous souhaitez en extraire la partie numérique, vous pouvez le faire en utilisant le code ci-dessous :

Fonction GetNumeric(CellRef As String) Dim StringLength As Integer StringLength = Len(CellRef) For i = 1 To StringLength If IsNumeric(Mid(CellRef, i, 1)) Then Result = Result & Mid(CellRef, i, 1) Next i GetNumeric = fonction de fin de résultat

Ce code créera une fonction personnalisée dans Excel qui pourra être utilisée dans la feuille de calcul (tout comme une fonction normale).

Où mettre le code VBA ?

Vous vous demandez où va le code VBA dans votre classeur Excel ?

Excel a un backend VBA appelé éditeur VB. Vous devez copier et coller le code dans la fenêtre de code du module VB Editor.

Voici les étapes à suivre :

  1. Allez dans l'onglet Développeur.
  2. Cliquez sur l'option Visual Basic. Cela ouvrira l'éditeur VB dans le backend.
  3. Dans le volet Explorateur de projets de l'éditeur VB, cliquez avec le bouton droit sur n'importe quel objet du classeur dans lequel vous souhaitez insérer le code. Si vous ne voyez pas l'Explorateur de projets, accédez à l'onglet Affichage et cliquez sur Explorateur de projets.
  4. Allez dans Insérer et cliquez sur Module. Cela insérera un objet module pour votre classeur.
  5. Copiez et collez le code dans la fenêtre du module.

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

wave wave wave wave wave