Fonctionnement iif

Bonjour à tous

j'aime bien l'utilisation de iif(condition, true, false) dans les programmations. Mais je viens de m'apercevoir de qqch

Sub testIIF()
    Dim wk As Workbook
    Dim res As String
    res = IIf(False, wk.Name, 0)
End Sub

il y a une évaluation du branchemet "vrai" (ici w.Name) , même si la condition est "fausse". Ainsi le code ci-dessus renvoie une erreur car wk n'est pas initialisé, ce qui peut être nécessaire.

Avez vous un moyen d'éviter cela sans passer par des boucles If/then/else

Merci bcp

Bonjour,

il y a une évaluation du branchemet "vrai" (ici w.Name) , même si la condition est "fausse".

En fait, les 2 conditions sont évaluées.

Ainsi le code suivant platera également.

Sub testIIF()
    Dim wk As Workbook
    Dim res As String
    res = IIf(False, 0, wk.Name)
End Sub

Non, tu n'as pas d'autres solutions que If Then Else ElseIf etc...

D'autant plus que If est plus rapide, plus secure, plus visuel pour un débutant...

Merci Franck

c'est bien ce que je pensais ... je vais donc me résoudre à des if/then/else

Bonne fin de journée

Attention à If, tout de même :

Sub TestIf() 'PLANTAGE
    Dim wk As Workbook, B As Boolean
    Dim res As String
    B = False
    If B = False Or wk.Name = "" Then
        MsgBox "toto"
    Else
        MsgBox "titi"
    End If
End Sub
Sub TestIf2()'PLANTAGE
    Dim wk As Workbook, B As Boolean
    Dim res As String
    B = False
    If B = False Then
        If wk.Name = "" Then
            MsgBox "toto"
        End If
    Else
        MsgBox "titi"
    End If
End Sub
Sub TestIf3()'PAS PLANTAGE
    Dim wk As Workbook, B As Boolean
    Dim res As String
    B = False
    If B = True Then
        If wk.Name = "" Then
            MsgBox "toto"
        End If
    Else
        MsgBox "titi"
    End If
End Sub
Rechercher des sujets similaires à "fonctionnement iif"