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.

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 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 "européen" ("10,15" ou "1.499,99") sera reconnu tout comme un chiffre "anglo-saxon" ("10.15" ou "1,499.99").

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

 Exemples de résultats pour différentes expressions

  • "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
  • "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
  • "" => x = IsNumeric("") => x = False

 

Code VBA: utilisation de la fonction IsNumeric

 

REMARQUE IMPORTANTE:

Cette fonction IsNumeric (en VBA) ne doit pas être confondue avec la fonction Excel =ESTNUM() (utilisée dans les 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 =ESTNUM() sur une feuille retournera Faux !

 

2 0

Partagez cette page...
Share on FacebookShare on Google+Share on LinkedInTweet about this on TwitterShare on RedditShare on TumblrDigg thisEmail this to someone

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.