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 :
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
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
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 :
- Une condition à évaluer.
- Une instruction à exécuter si cette condition est TURE.
- Si cette condition est FALSE alors nous avons la deuxième condition à évaluer.
- Et, si la deuxième condition est VRAIE, nous avons une déclaration à effectuer.
- 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
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.
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.
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.
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.
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.
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.