Re,
Afin de bien comprendre la différence entre ces deux codes qui retournent pour ainsi dire la même valeur.
Avec IIf() les deux valeurs de retours sont évaluées même si ce n'est que la première qui sera retournée par la fonction dans l'exemple ci-dessous et comme il y a évaluation des deux, le code est légèrement plus lent, si il n'y a que quelques IIf() ça va mais il ne faut pas en utiliser de trop dans le code si on cherche la rapidité :
Sub TestIIf()
Dim Valeur1 As Integer
Dim Valeur2 As Integer
Valeur1 = 10
Valeur2 = 20
'ici, une erreur sera produite car les deux valeurs de retour sont évaluées !
MsgBox IIf(Valeur1 < Valeur2, Valeur2 - Valeur1, Valeur1 / 0)
End Sub
Sub TestIFThenElse()
Dim Valeur1 As Integer
Dim Valeur2 As Integer
Valeur1 = 10
Valeur2 = 20
'ici, l'erreur n'est pas relevée car seule la 1ère valeur est évaluée et retournée !
If Valeur1 < Valeur2 Then
MsgBox Valeur2 - Valeur1
Else
MsgBox Valeur1 / 0
End If
End Sub