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

Et maintenant un exemple pratique de l'utilisation de la fonction IsNumeric dans une macro…

 

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…

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

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