Ton code cumule beaucoup de défaut à éviter.
Tout d'abord, tu déclares tout en Variant, ce qui est une mauvaise idée.
Déclare tes paramètres en Double et ça t'évitera les tests IsNumeric().
Idem pour la déclaration de la fonction elle-même.
Ensuite, on n'utilise pas On Error sur un code qui n'est pas stabilisé.
Et même sur un code stabilisé, on l'utilise avec parcimonie, sur une seule ligne et de façon contrôlé.
On Error ne sert pas à masquer les imperfections d'un code.
De toute façon, Excel se chargera de renvoyer une valeur d'erreur de lui-même si les paramètres ne sont pas conformes.
Et enfin, ton test est une sorte d'oxymore informatique : tu vérifies si une valeur est numérique et, sur la même ligne, tu la compares à une chaine de caractère.
Ca n'est pas logique.
1 2 3
| Function Devers(z1 As Double, z2 As Double) As Double
Devers = z1 - z2
End Function |
Et si tu veux que ça renvoit NA en cas d'erreur, utilise-le ainsi :
=SIERREUR(Devers(A1;A2);NA())
Partager