Bonjour à tous,
En bref : attention à la fonction VBA "IsNumeric", car cette fonction va retourner Vrai (True), même pour une chaîne de caractère comme "1".
Je suis en train de travailler sur des fonctions très spécifiques pour la prochaine formation VBA avancé sur les arrays !
Il va être très complet et super utile 🙂
Au passage, je suis tombé sur la fonction IsNumeric et une "limite" assez dangereuse (source : Cheap Pearson).
Ce code va ainsi retourner 12, au lieu de 3 !
Sub test_AttentionIsNumeric()
Dim V1 As Variant
Dim V2 As Variant
V1 = "1"
V2 = "2"
If IsNumeric(V1) = True Then
If IsNumeric(V2) = True Then
MsgBox V1 + V2
End If
End If
End Sub
Donc, il faut faire très attention à la fonction IsNumeric, car elle va retourner la valeur Vraie (True), même s'il s'agit d'une string (chaîne de caractères), et le '+' va se comporter comme un '&'.
[EDIT]: suite à un commentaire de Raphaël, vous pouvez faire une conversion des strings avant utilisation, en utilisant ces fonctions : CDbl ou CLng. Il existe d'autres fonctions de conversion pour d'autres cas de figure : CStr, CVar, CDate, etc.
A bientôt.
Gaëtan