Vérifier si une valeur est numérique en VBA (fonction IsNumeric)

VBA fonction IsNumeric

Besoin de tester si une valeur en VBA représente un nombre ? La fonction IsNumeric est là pour ça. Simple et efficace, elle permet de sécuriser vos macros et d'éviter les erreurs quand l'utilisateur saisit du texte ou un format inattendu.

Pourquoi vérifier les données en VBA ?

Contrôler les données en amont est une bonne habitude. Cela évite des bugs du type "Type mismatch" (incompatibilité de type) quand vous tentez d'utiliser un texte dans un calcul. Par exemple : une saisie via un InputBox ou un champ de formulaire peut contenir n'importe quoi. IsNumeric vous permet de filtrer immédiatement.

La fonction VBA IsNumeric

Cette fonction renvoie True (Vrai) si l'expression peut être interprétée comme un nombre, et False sinon. Elle est souple :

  • les espaces autour du nombre (" 125 ") sont tolérés ;
  • les zéros de tête ("00015") ne posent pas de souci ;
  • les formats régionaux (français 1 499,99 / anglais 1,499.99) sont pris en compte automatiquement.

Attention : une chaîne vide ("") renverra False. Et les dates sont aussi considérées comme numériques en VBA, ce qui peut surprendre.

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 : utilisation pratique

Un petit exemple d’utilisation dans une macro :

Attention : IsNumeric vs. ESTNUM (Excel)

Ne confondez pas la fonction VBA IsNumeric avec la fonction Excel ESTNUM. Elles n’ont pas le même comportement. Exemple : dans Excel installé en français, =ESTNUM("1000.9") renvoie Faux, alors que IsNumeric("1000.9") en VBA renvoie Vrai.

FAQ – IsNumeric en VBA
Est-ce qu’IsNumeric considère une date comme un nombre ?
Oui. Les dates étant stockées comme des nombres en interne, IsNumeric(Date) renvoie True.

Quelle est la différence entre IsNumeric et VarType ?
VarType renvoie le type exact de la variable (Integer, Double, String, etc.). IsNumeric se contente de dire si ça peut être interprété comme un nombre.

Comment gérer une cellule vide ?
Si la valeur est vide (""), IsNumeric renvoie False. Vous pouvez tester en plus If Len(Trim(valeur))=0 Then...

Pour aller plus loin en VBA…

Et pour terminer, 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 “Vérifier si une valeur est numérique en VBA (fonction IsNumeric)”