Fonction Excel VBA IIF

VBA IIF (également connu sous le nom Immediate If) est une déclaration que vous avez souvent vue lors du codage sous VBA et de la création de macros. Elle est similaire à la fonction IF d'Excel où vous notez une condition logique et donne deux sorties, si la condition est vraie et si la condition est fausse. Si en le regardant, vous le pensez comme une fonction similaire à VBA IF que nous utilisons pour évaluer les tests et les conditions logiques, vous vous trompez. Il semble être proche de VBA Si et idéalement, on peut dire qu'ils ont vraiment une petite différence entre eux lors de l'exécution. Dans cet article, nous obtiendrons plus d'informations sur la déclaration VBA IIF et sur la façon de l'utiliser dans notre vie de codage quotidienne pour faciliter nos tâches.

L'instruction VBA IIF fonctionne de manière similaire à l'instruction Excel IF. Il vérifie la condition ou l'instruction logique fournie et donne une sortie associée à la condition TRUE ou lorsque la condition est FALSE.

Syntaxe de IIF dans Excel VBA

La syntaxe de la fonction VBA IIF dans Excel est la suivante:

Où,

  • Expression: est la condition logique que nous voulions évaluer sous la fonction IIF
  • TruePart: est la valeur / sortie que nous attendons, lorsque la condition / expression logique est VRAIE.
  • FalsePart: est la valeur / sortie que nous attendons, lorsque la condition / expression logique est FALSE.

Comment utiliser Excel VBA IIF?

Essayons maintenant avec quelques exemples sur VBA IIF dans Excel.

Vous pouvez télécharger ce modèle Excel VBA IIF ici - Modèle Excel VBA IIF

Prenons un exemple simple pour voir comment fonctionne l'IIF sous Microsoft VBA.

Exemple # 1 - VBA IIF

Étape 1: ouvrez un éditeur Visual Basic (VBE). Allez dans l'onglet Insertion et cliquez sur Module . Il ajoutera un nouveau module sous VBE.

Étape 2: Définissez une nouvelle sous-procédure qui peut contenir votre macro dans ce module.

Code:

 Sub IIf_Ex1 () End Sub 

Étape 3: Définissez deux nouvelles variables Var_1 comme Long et Résultat avec le type de données comme variante.

Code:

 Sub IIf_Ex1 () Dim var_1 As Long Dim Résultat As Boolean End Sub 

Étape 4: attribuez une valeur numérique à Var_1 afin que nous puissions utiliser cette variable pour vérifier la condition IIF logique.

Code:

 Sub IIf_Ex1 () Dim var_1 As Long Dim Résultat As Boolean var_1 = 5 End Sub 

Étape 5: Utilisez la variable Résultat pour stocker la condition IIF logique dans laquelle nous allons vérifier si la valeur affectée à Var_1 est supérieure ou égale à 10.

Code:

 Sub IIf_Ex1 () Dim var_1 As Long Dim Résultat As Boolean var_1 = 5 Result = IIf (var_1> = 10, True, False) End Sub 

Étape 6: Maintenant, utilisez Debug.Print pour imprimer le résultat de la condition IIF dans le volet de visualisation des résultats immédiats.

Code:

 Sub IIf_Ex1 () Dim var_1 As Long Dim Résultat As Boolean var_1 = 5 Result = IIf (var_1> = 10, True, False) Debug.Print Result End End Sub 

Étape 7: exécutez ce code en appuyant sur F5 ou sur le bouton Exécuter en haut du volet et consultez la sortie sous le volet Sortie immédiate.

Exemple # 2 - VBA IIF

Supposons que nous ayons des données sous la feuille de calcul comme suit:

Tout ce que nous voulons, c'est une sortie sous la colonne B telle que, soit le nombre soit pair ou impair.

Étape 1: définir une nouvelle sous-procédure sous VBE.

Code:

 Sub IIF_Ex2 () End Sub 

Étape 2: définissez deux variables «a» et «nombres» comme longues.

Code:

 Sub IIF_Ex2 () Dim a As Long Dim Number As Long End Sub 

Étape 3: démarrer une boucle For sous laquelle nous voulons boucler toutes les valeurs présentes dans la cellule A2: A11. La boucle commencera de 2 à 11 (car nous avons des en-têtes dans la ligne 1 pour les colonnes A et B).

Code:

 Sub IIF_Ex2 () Dim a Long As Dim Number As Long For a = 2 To 11 End Sub 

Étape 4: Utilisez la variable numérique définie précédemment pour stocker tous les nombres de la colonne A variant sur la plage donnée à l'aide de l'opérateur d'affectation (A2: A11). Utilisez la ligne de code suivante pour ce faire.

Number = Sheet1.Range ("A" & a)

Code:

 Sub IIF_Ex2 () Dim a as Long Dim Number As Long For a = 2 To 11 Number = Sheet1.Range ("A" & a) End Sub 

Cette ligne de code permet à VBA de parcourir toutes les lignes de la colonne A de «Sheet1» dans Excel une par une sous la boucle For.

Étape 5: Utilisez IIF pour vérifier si chaque valeur de cellule est paire ou impaire et stockez les résultats sous chaque cellule de la colonne B. La ligne de code suivante fera la tâche pour vous.

Sheet1.Range ("B" & a) .Value = IIf (Number Mod 2 = 0, "Pair", "Impair")

Code:

 Sub IIF_Ex2 () Dim a as Long Dim Number As Long For a = 2 To 11 Number = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a) .Value = IIf (Number Mod 2 = 0, "Pair", "Impair") End Sub 

Ici, dans cette ligne, nous voulons que les résultats soient stockés sous chaque cellule de la colonne B de la feuille Sheet1. Par conséquent, nous avons utilisé «Sheet1.Range (« B »& i) .Value» sur le côté gauche du morceau de code. Nous avons utilisé IIF pour vérifier si le nombre est divisible par 2 en utilisant Mod (opérateur Modulo sous VBA). Enfin, nous voulons que la sortie indique si le nombre est pair ou impair dans la colonne B. Par conséquent, ces deux valeurs sont mentionnées sous l'instruction IIF.

Étape 6: fermez la boucle For avec l'instruction Next afin qu'après chaque itération, le système se déplace vers la cellule suivante de la feuille, jusqu'à ce qu'il atteigne la 11 e ligne.

Code:

 Sub IIF_Ex2 () Dim a as Long Dim Number As Long For a = 2 To 11 Number = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a) .Value = IIf (Number Mod 2 = 0, "Pair", "Impair") Next End Sub 

Étape 7: C'est tout. Exécutez ce code en appuyant sur F5 ou sur le bouton Exécuter placé dans le volet supérieur de VBE. Une fois que vous avez exécuté cette macro, vous verrez une sortie comme ci-dessous sous la feuille Sheet1 (nommée "Example_1") du classeur Excel.

Exemple # 3 - VBA IIF

Nous allons maintenant voir une déclaration imbriquée IIF:

C'est de la même manière que nous imbriquons plusieurs conditions IF dans une seule boucle.

Supposons les mêmes données que celles utilisées dans le cas précédent. Tout ce que nous voulions, c'est écrire un code qui nous permette de distinguer les nombres comme suit:

  • Si le nombre est compris entre 1 et 3 (3 inclus), il doit mentionner «Petit» dans la colonne B.
  • Si le nombre est compris entre 4 et 6 (6 inclus), il doit mentionner «Moyen» dans la colonne B.
  • Si le nombre est compris entre 7 et 10 (10 inclus), il doit mentionner «Large» dans la colonne B.

Écrivons un code pour ce type de IIF:

Étape 1: Définissez une nouvelle sous-procédure sous votre VBE qui peut contenir votre macro.

Code:

 Sub NestedIf () End Sub 

Suivez l' étape 2 à l'étape 4 comme dans l'exemple ci-dessus (exemple 2 dans cet article). Il comprend la définition de variables et l'ajout de tous les nombres présents dans la colonne A sous une boucle For.

Étape 5: utilisez le morceau de code suivant pour obtenir la sortie souhaitée.

Code:

 Sub NestedIf () Dim Number As Long For a = 2 To 11 Number = Sheet2.Range ("A" & a) Sheet2.Range ("B" & a) .Value = IIf (Number = 7, "Large", " Moyen ")) End Sub 

Étape 6: fermez la boucle For avec l'instruction Next et exécutez ce code à l'aide de F5 ou du bouton Exécuter présent dans le ruban supérieur sous VBE. Une fois que vous exécutez le code, vous verrez la sortie comme ci-dessous:

Ici, dans ce code, l'IIF imbriqué est utilisé. Sous le premier IIF, on nous donne ce qui doit être imprimé sous la colonne B lorsque les nombres sont compris entre 1 et 3. Sous le deuxième IIF, nous avons mentionné ce qui doit être imprimé sous la colonne B lorsque les nombres sont supérieurs ou égaux à 7 et sous le même IIF, nous avons fourni ce qui devrait être imprimé sous la colonne B lorsque les nombres ne sont pas compris entre 1 à 3 et 7 à 10.

De cette façon, nous pouvons ajouter plusieurs IIF sous le même code et les imbriquer. C'est de cet article. Terminons la chose avec certaines choses à retenir.

Choses dont il faut se rappeler

  • IIF évalue toujours les deux parties (TRUE et FALSE) pour une condition particulière. Cependant, il imprime uniquement la partie FAUX lorsque rien n'est VRAI.
  • L'écriture est plus courte que celle des instructions If-Else standard.
  • Il n'est pas bien connu, donc certains utilisateurs pourraient ne pas comprendre votre code si vous avez utilisé IIF au lieu de If-Else conventionnel.

Articles recommandés

Ceci est un guide de VBA IIF. Nous discutons ici comment utiliser Excel VBA IIF avec des exemples pratiques et un modèle Excel téléchargeable. Vous pouvez également consulter nos autres articles suggérés -

  1. Travailler avec VBA Active Cell
  2. Suppression d'une ligne dans VBA
  3. Comment utiliser Excel VBA Transpose?
  4. Comment réparer l'erreur 1004 en utilisant VBA

Catégorie: