VBA: Comment vérifier si une chaîne de caractères représente un nombre?

Si vous avez besoin de vérifier en VBA si une expression (notamment une chaîne de caractères – Stringreprésente un nombre, vous pouvez utiliser la fonction IsNumeric.

Vérification des données en amont: Indispensable pour éviter des problèmes

Utiliser cette vérification est une bonne idée surtout si vous devez travailler avec le résultat d'une saisie manuelle par l'utilisateur (par exemple via les formulaires ou via un InputBox). Elle sert également à vérifier les valeurs avant leur utilisation dans un calcul – cela prévient les blocages de vos macros causés par les types de données incompatibles (par exemple l'utilisation d'un texte dans un calcul mathématique).

De cette manière, vous pouvez gérer efficacement le problème avant même qu'il ne se produise.

Fonction VBA: IsNumeric

Cette fonction retourne la valeur Vrai ou Faux (True ou False) selon si l'expression peut être interprétée comme un nombre.

L'avantage de cette fonction VBA est que d'éventuels espaces (par ex. "    125 " ) ou des zéros de tête (par ex. "00015") ne sont pas pris en compte. Vous ne devez donc pas nécessairement "nettoyer" vos données au préalable.

L'autre avantage est que cette fonction gère automatiquement les formats régionaux. Un chiffre en format "européen" ("10,15" ou "1.499,99") sera reconnu tout comme un chiffre en format  "anglo-saxon" ("10.15" ou "1,499.99"). Et cela peut grandement faciliter la vie!

Attention, une expression vide (expression = "") ne sera pas considérée comme un nombre et va retourner la valeur False.

Exemples des résultats pour différentes vérifications des expressions potentiellement numériques

Et voici quelques exemples pour voir ce que la fonction IsNumeric peut faire pour vous en pratique…

  • "123" => x = IsNumeric("123") => x = True
  • "-123" => x = IsNumeric("-123") => x = True
  • "- 123" => x = IsNumeric("- 123") => x = True
  • "1 2" => x = IsNumeric("1 2") => x = False
  • "   123 " => x = IsNumeric(" 123 ") => x = True
  • "00015" => x = IsNumeric("00015") => x = True
  • "1,99" => x = IsNumeric("1,99") => x = True
  • "1.99" => x = IsNumeric("1.99") => x = True
  • "1.000,99" => x = IsNumeric("1.000,99") => x = True
  • "1,000,99" => x = IsNumeric("1,000,99") => x = False
  • "1,000.99" => x = IsNumeric("1,000.99") => x = True
  • "A19" => x = IsNumeric("A19") => x = False
  • "test" => x = IsNumeric("test") => x = False
  • "" => x = IsNumeric("") => x = False

 

Code VBA: Comment utiliser la fonction IsNumeric

Sub VerifierNombres()
' par Excel-Malin.com - https://excel-malin.com

On Error GoTo Erreur
Dim MonNombre As Variant

'choisir l'expression à tester
MonNombre = "123.45"
'MonNombre = "007"
'MonNombre = "1A45"

'procéder au test et indiquer des actions à effectuer
If IsNumeric(MonNombre) = True Then
    'votre code si expression est numérique
        MsgBox "L'expression est un nombre"
Else
    'votre code si expression n'est pas numérique
        MsgBox "L'expression n'est pas un nombre"
End If

Exit Sub
Erreur:
MsgBox "Une erreur s'est produite..."
End Sub

 

REMARQUE IMPORTANTE:

Cette fonction IsNumeric (en VBA) ne doit pas être confondue avec la fonction Excel ESTNUM (utilisée directement dans les Classeurs/Feuilles)  – par ex. =ESTNUM(B12) –  car celle-ci se comporte différemment. Notamment elle tient compte des paramètres régionaux.

Pour illustration, dans un Excel installé en français, pour l'expression "1000.9", la fonction VBA IsNumeric retournera Vrai, tandis que la fonction Excel ESTNUM retournera Faux !

Pour aller plus loin en VBA…

Voici quelques autres articles qui pourraient vous être utiles lors de votre programmation en VBA…

 

22 0

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée.

2 commentaires sur “VBA: Comment vérifier si une chaîne de caractères représente un nombre?”