Astuce VBA : un opérateur ternaire ?

La plupart des langages de programmation disposent d'un opérateur ternaire (qui permet d'écrire une condition très simplement sur une seule ligne), généralement sous la forme suivante :

ma_condition ? si_vrai : si_faux

Cet opérateur n'existe malheureusement pas en VBA mais une fonction qui s'en rapproche beaucoup permet d'écrire une condition sur une ligne.

Il s'agit de la fonction IIf.


Exemple simple 1

Pour mieux comprendre, voici une condition If simple :

Sub condition()
    
    age = 20
    
    If age >= 18 Then
        texte = "majeur"
    Else
        texte = "mineur"
    End If
    
End Sub

En utilisant la fonction IIf, il est possible de simplifier l'écriture comme ceci :

Sub condition()
    
    age = 20
    
    texte = IIf(age >= 18, "majeur", "mineur")

End Sub

Exemple simple 2

Il s'agit de la même condition que précédemment, avec l'affichage du résultat dans une MsgBox cette fois-ci :

Sub condition()
    
    age = 20
    
    If age >= 18 Then
        texte = "majeur"
    Else
        texte = "mineur"
    End If
    
    MsgBox "Maurice est " & texte & " !"
    
End Sub

L'utilisation de la fonction IIf permet ici de simplifier encore plus l'écriture en ajoutant la condition directement dans la valeur de la MsgBox :

Sub condition()
    
    age = 20

    MsgBox "Maurice est " & IIf(age >= 18, "majeur", "mineur") & " !"
    
End Sub
ternaire vba msgbox