Comment utiliser l’instruction IF avec ELSE dans VBA ?

Si vous voulez être un utilisateur avancé de VBA, une instruction IF est indispensable. Et, je crois que vous connaissez déjà le mot SI et que vous l’utilisez fréquemment comme fonction de feuille de calcul.

Dans VBA, IF fonctionne de la même manière. Son idée de base est d’effectuer une tâche lorsqu’une condition est VRAIE, sinon ne rien faire ou faire autre chose. Vous pouvez écrire simplement ainsi que dans des conditions complexes.

Pour des raisons de compréhension, je l’ai divisé en trois parties différentes.

  • Une condition à tester.
  • Une tâche à effectuer si la condition est VRAIE.
  • Une tâche à effectuer si la condition est FAUSSE.

Voici à quoi cela ressemble dans la vraie vie :

en utilisant le code d'instruction VBA IF dans Excel

Dans l’exemple ci-dessus, la pluie est une condition. Si cette condition est VRAIE, le garçon ouvrira son parapluie et si la condition est FAUSSE il portera son chapeau. Les conditions sont omniprésentes dans notre vie quotidienne. Mais maintenant, revenons à notre monde de codage et explorons-le.

Syntaxe : VBA SI

Nous avons trois types différents d’instructions IF dans VBA.

1. SI-Alors

IF THEN est la forme la plus simple d’une instruction IF. Tout ce que nous avons à faire est de spécifier une condition à vérifier et si cette condition est VRAIE, elle effectuera une tâche. Mais, si cette condition est FAUX, il ne fera rien et sautera la ligne instantanément.

Syntaxe

IF condition Then statement[s]

Dans la syntaxe ci-dessus, nous devons spécifier une condition à évaluer et une tâche à effectuer si cette condition est VRAIE.

Exemple

instruction vba if utilisant le code de macro if then

Dans l’exemple ci-dessus, nous avons vérifié que la cellule A1 contient la valeur 10 et si c’est le cas, l’instruction affichera une boîte de message avec le message « La cellule A1 a la valeur 10 ».

Sub CheckValue()
If Range("A1").Value = 10 Then
MsgBox ("Cell A1 has value 10")
End Sub

2. SI-alors-sinon

Vous pouvez utiliser l’instruction IF-Then-Else lorsque vous souhaitez effectuer une tâche spécifique si une condition est TRUE et une tâche différente si une condition est FALSE.

Syntaxe

IF Condition Then
Statement[s]
Else
Statement[s]
End If

Avec la syntaxe ci-dessus, nous pouvons effectuer différentes tâches en fonction du résultat d’une condition. Si la condition est TRUE, il exécutera l’instruction que vous avez mentionnée après « Then » ou si la condition est FALSE, il exécutera l’instruction que vous avez mentionnée après « Else ».

Exemple

Sub CheckValue()
 If Range("A1").Value = "10" Then
     MsgBox ("Cell A1 has value 10")
 Else
     MsgBox ("Cell A1 has a value other than 10")
 End Sub
vba if instruction utilisant le code de macro if then else

Dans l’exemple ci-dessus, j’ai utilisé l’instruction IF-Then-Else pour vérifier la valeur dans la cellule A1.

Si la cellule A1 a une valeur de 10, vous obtiendrez une boîte de message indiquant « La cellule A1 a une valeur de 10 » et s’il y a une autre valeur dans la cellule A1, vous obtiendrez une boîte de message indiquant « La cellule A1 a une valeur autre que 10 ”. Donc, ici, nous sommes en mesure d’effectuer différentes tâches en fonction du résultat de la condition.

3. SI-Alors-Elseif-Else

C’est le type de IF le plus utile et le plus important qui vous aidera à écrire des déclarations de condition avancées. Dans ce type, vous pouvez spécifier la deuxième condition après avoir évalué votre première condition.

Syntaxe

IF Condition Then
Statement[s]
Elseif Condition Then
Statement[s]
Else
Statement[s]
End If

Dans la syntaxe ci-dessus, nous avons :

  1. Une condition à évaluer.
  2. Une instruction à exécuter si cette condition est TURE.
  3. Si cette condition est FALSE alors nous avons la deuxième condition à évaluer.
  4. Et, si la deuxième condition est VRAIE, nous avons une déclaration à effectuer.
  5. Mais, si les deux conditions, la première et la seconde sont FAUSSES, il effectuera une déclaration que vous avez mentionnée après « Sinon ».

Et, la meilleure partie est que vous pouvez utiliser n’importe quel nombre de « Elseif » dans votre code. Cela signifie que vous pouvez spécifier n’importe quel nombre de conditions dans votre déclaration.

Exemple

vba if instruction utilisant if then elseif elseif macro code
Sub check_grade()
 If Range("A2").Value = "A" Then
     MsgBox "Very Good"
 Else
 If Range("A2").Value = "B" Then
     MsgBox "Good"
 ElseIf Range("A2").Value = "C" Then
     MsgBox "Average"
 ElseIf Range("A2").Value = "D" Then
     MsgBox "Poor"
 ElseIf Range("A2").Value = "E" Then
     MsgBox "Very Poor"
 Else
     MsgBox "Enter Correct Grade"
 End Sub

Dans l’exemple ci-dessus, nous avons écrit une macro qui vérifiera d’abord la cellule A2 pour la valeur « A » et si la cellule a la note « A », l’instruction renverra le message « Très bien ».

Cette instruction vérifiera d’abord la cellule A2 pour la valeur « A » et si la cellule a la note « A », l’instruction renverra le message « Très bien ».

Et, si la première condition est FAUX, il évaluera la deuxième condition et renverra le message « Bon » si la cellule a une note de « B ».

Et, si la deuxième condition est fausse alors il passera à la troisième condition, et ainsi de suite. En fin de compte, si les cinq conditions sont fausses, il exécutera le code que j’ai écrit après le reste.

Le secret de l’écriture d’une instruction IF dans VBA

Maintenant, vous connaissez tous les types de SI et vous pouvez également en choisir un en fonction de la tâche que vous devez effectuer. Laisse-moi te dire un secret.

Instruction IF à une ligne Vs. Bloquer l’instruction IF

Vous pouvez écrire une instruction IF de deux manières différentes et les deux présentent des avantages et des inconvénients. Regarde.

1. Déclaration en une ligne

L’instruction d’une ligne est parfaite si vous utilisez l’instruction IF-Then. La base pour utiliser une instruction de ligne est d’écrire tout votre code sur une seule ligne.

If A1 = 10 Then Msgbox("Cell A1 has value 10")

Dans l’instruction ci-dessus, nous avons écrit une instruction IF pour évaluer si la cellule A1 a une valeur de 10, puis elle affichera une boîte de message. La meilleure pratique pour utiliser une instruction sur une ligne est lorsque vous devez écrire un code simple. L’utilisation d’un code d’une ligne pour des déclarations complexes et longues est difficile à comprendre.

Petite astuce : lorsque vous écrivez du code sur une seule ligne, vous n’avez pas besoin d’utiliser Endif pour terminer l’instruction.

2. Déclaration de bloc

Une instruction Block est parfaite lorsque vous souhaitez écrire votre code de manière décente et compréhensible. Lorsque vous écrivez une instruction de bloc, vous pouvez utiliser plusieurs lignes dans votre macro, ce qui vous donne un code net et propre.

Sub check_value()
 If Range(“A1”).Value = “10” Then
     MsgBox ("Cell A1 has value 10")
 Else
     MsgBox ("Cell A1 has a value other than 10")
 End If
 End Sub

Dans l’exemple ci-dessus, nous avons écrit une instruction IF-Then-Else en blocs. Et, vous pouvez voir qu’il est facile à lire et même facile à déboguer.

Lorsque vous écrivez des instructions complexes (ce que vous ferez certainement après avoir lu ce guide), les instructions de bloc sont toujours bonnes. Et, tout en écrivant des instructions If imbriquées, vous pouvez également ajouter une indentation dans votre ligne pour plus de clarté.

Astuce rapide – Vous avez une exception que vous pouvez ignorer en utilisant Else à la fin de votre code lorsque vous utilisez IF-Then-Elseif-Else. Ceci est très utile lorsque vous n’avez pas besoin d’effectuer de tâche lorsqu’aucune des conditions n’est VRAIE dans votre instruction.

8 exemples concrets

Ici, j’ai énuméré quelques exemples simples mais utiles que vous pouvez suivre.

1. SI imbriqué

La meilleure partie de l’instruction IF est que vous créez des instructions imbriquées. Vous pouvez ajouter une deuxième condition à la première condition.

écriture d'imbrication si avec vba if instruction
Sub NestIF()
 Dim res As Long
 res = MsgBox("Do you want to save this file?", vbYesNo, "Save File")
 If res = vbYes Then 'start of first IF statement
     If ActiveWorkbook.Saved <> True Then 'start of second IF statement.
         ActiveWorkbook.SaveMsgBox ("Workbook Saved")
     Else
         MsgBox "This workbook is already saved"
     End If 'end of second IF statement
 Else
     MsgBox "Make Sure to save it later"
 End If ' end of first IF statement
 End Sub

Dans l’exemple ci-dessus, nous avons utilisé une instruction IF imbriquée. Lorsque vous exécutez cette macro , vous obtenez une boîte de message avec les options OK et Annuler. Le travail de l’instruction conditionnelle commence après cela.

Tout d’abord, il évaluera le bouton sur lequel vous avez cliqué. Si vous avez cliqué sur « Oui », imbriquez-le pour évaluer si votre feuille de calcul est enregistrée ou non.

Si votre classeur n’est pas enregistré, il l’enregistrera et vous recevrez un message. Et, si le classeur est déjà enregistré, il affichera un message à ce sujet.

Mais si vous cliquez sur le bouton la condition de la première macro sera FALSE et vous n’obtiendrez qu’un message pour sauvegarder votre livre plus tard.

L’idée de base dans ce code est que la deuxième condition dépend totalement de la première condition si la première condition est FAUX alors la deuxième condition ne sera pas évaluée.

En savoir plus sur Nested IF

2. Créer une boucle avec IF et GoTo

Vous pouvez également créer une boucle en utilisant goto avec IF. La plupart des programmeurs évitent d’écrire des boucles de cette façon car nous avons de meilleurs moyens pour une boucle . Mais il n’y a pas de mal à apprendre comment nous pouvons le faire.

Sub auto_open()
 Alert: If InputBox("Enter Username") <> "Puneet" Then
 GoTo Alert
 Else
 MsgBox "Welcome"
 End If
End Sub

Dans l’exemple ci-dessus, nous avons utilisé une instruction de condition pour créer une boucle. Nous avons utilisé auto_open comme nom de la macro afin que chaque fois que quelqu’un ouvre le fichier, il exécute cette macro.

L’utilisateur doit entrer un nom d’utilisateur et si ce nom d’utilisateur n’est pas égal à « Puneet », il répétera le code et affichera à nouveau la zone de saisie. Et, si vous entrez le bon texte, il pourra accéder au fichier.

3. Vérifiez si une cellule contient un nombre

Ici, nous avons utilisé une condition pour vérifier si la cellule active contient ou non une valeur numérique.

utiliser l'instruction vba if pour vérifier le nombre dans la cellule
Sub check_number()
 If IsNumeric(Range("B2").Value) Then
     MsgBox "Yes, active cell has a number."
 Else
     MsgBox "No, active cell hasn't a number."
 End If
 End Sub

Dans l’exemple ci-dessus, j’ai écrit une condition en utilisant la fonction isnumeric dans VBA qui est identique à la fonction number de la feuille de calcul pour vérifier si la valeur d’une cellule est un nombre ou non.

Si la valeur est un nombre, elle renverra VRAI et vous obtiendrez un message « Oui, la cellule active a une valeur numérique ». Et, si la valeur n’est pas un nombre, vous recevrez un message « Aucune valeur numérique dans la cellule active ».

4. Utiliser OR et AND avec IF

En utilisant IF OR, vous pouvez spécifier deux conditions ou plus et effectuer une tâche si au moins une condition est VRAIE parmi toutes.

Sub UsingOR()
 If Range("A1") < 70 Or Range("B1") < 70 Then
     MsgBox "You Are Pass"
 Else
     If Range("A1") < 40 And Range("B1") < 40 Then
         MsgBox "You Are Pass"
     Else
         MsgBox "You Are Fail"
     End If
 End If
 End Sub

Dans l’exemple ci-dessus, à la ligne 2, nous avons deux conditions utilisant le OU. Si un étudiant obtient 70 points dans l’une des matières, le résultat sera un « Pass ». Et à la ligne 7, nous avons deux conditions utilisant l’opérateur AND. Si un élève obtient plus de 40 points dans les deux matières, le résultat sera « Réussite ».

En utilisant le SI ET vous pouvez spécifier plusieurs conditions et effectuer une tâche si toutes les conditions sont VRAIES.

5. Utiliser Pas avec SI

En utilisant NOT dans une condition, vous pouvez changer TRUE en FALSE et FALSE en TRUE.

VBA SI NON

Sub IF_Not()
     If Range(“D1”) <= 40 And Not Range(“E1”) = “E” Then
         MsgBox "You Are Pass."
     Else
         MsgBox "You Are Fail."
     End If
 End Sub

Dans l’exemple ci-dessus, nous avons utilisé NOT dans la condition. Nous avons deux cellules avec le score du sujet. Dans une cellule, le score est en chiffres et dans une autre cellule, il a des notes.

  • Si un élève a des notes supérieures à 40 dans la première matière et au-dessus de la note E dans la deuxième matière, il s’agit d’un PASS.
  • Si un élève a des notes supérieures à 40 dans la première matière et au-dessus de la note E dans la deuxième matière, il est PASS.

Ainsi, chaque fois que les notes d’un élève sont supérieures à 40 et une note autre que E, nous recevrons un message « You are Pass » ou bien « You are Fail ».

6. Déclaration IF avec une case à cocher

Maintenant, nous utilisons ici une case à cocher pour exécuter une macro.

en utilisant vba if instruction avec case à cocher
Sub ship_as_bill()
 If Range("D15") = True Then
     Range("D17:D21") = Range("C17:C21")
 Else
     If Range(“D15”) = False Then
         Range("D17:D21").ClearContents
     Else
         MsgBox (“Error!”)
     End If
 End If
 End Sub

Dans l’exemple ci-dessus, nous avons utilisé une instruction IF pour créer une condition selon laquelle si la case est cochée, la plage D17: D21 est égale à la plage C17: C21. Et, si la case n’est pas cochée, la plage D17: D21 sera vide.

En utilisant cette technique, nous pouvons utiliser l’adresse de facturation comme adresse de livraison et si nous avons besoin d’autre chose, nous pouvons entrer l’adresse manuellement.

7. Vérifiez si une cellule est fusionnée

Et ici, nous écrivons une condition pour recevoir une alerte si une cellule active est fusionnée.

vérifier si une cellule est fusionnée à l'aide de l'instruction vba if
Sub MergeCellCheck()
If ActiveCell.MergeCells Then
MsgBox "Active Cell Is Merged"
Else
MsgBox "Active Cell Is Not Merged"
End If
End Sub

Dans le code ci-dessus, nous avons utilisé des cellules fusionnées pour vérifier si la cellule active est fusionnée ou non. Si la cellule active est fusionnée, la condition renverra une alerte pour cela .

8. Supprimer toute la ligne si une cellule est vide

Ici, nous utilisons IF pour vérifier si une ligne est vide ou non. Et, si cette ligne est vide, l’instruction supprimera cette ligne particulière.

Sub DeleteRow()
If Application.CountA(ActiveCell.EntireRow) = 0 Then
 ActiveCell.EntireRow.Delete
Else
 MsgBox Application.CountA(ActiveCell.EntireRow) & "Cell(s) have values in this row"
End If
End Sub

Dans l’exemple ci-dessus, il vérifiera d’abord les cellules qui ont une valeur. Si le nombre de cellules avec une valeur est zéro, la condition supprimera la ligne active, sinon renverra l’alerte indiquant le nombre de cellules ayant une valeur.

Conclusion

Comme je l’ai dit, c’est l’une des parties les plus importantes de VBA et vous devez l’apprendre si vous voulez maîtriser VBA. Avec l’instruction IF, vous pouvez écrire des codes simples ainsi que des codes complexes. Vous pouvez également utiliser des opérateurs logiques et écrire des conditions imbriquées.

J’espère que ce guide vous aidera à écrire de meilleurs codes.

Maintenant dis-moi ceci. Écrivez-vous fréquemment des conditions en VBA ? Quel genre de codes écrivez-vous? S’il vous plaît partagez vos points de vue avec moi dans la section des commentaires. Et n’oubliez pas de partager ce guide avec vos amis.

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *