Astuces de recherche...
Home
- Accueil & nouveautés
- Les newsgroups VB
- Téléchargements
- L'équipe
- Nous contacter
- Liens
Rubriques
- Toutes les questions
- Affichage & graphismes
- Algorithmique
- API
- Base de registre
- Bases de données
- Contrôles
- Date & heure
- Déploiement
- Divers
- Erreurs & problèmes
- Fichiers & dossiers
- Généralités
- Impression
- Internet & mails
- Math
- Multimédia
- Réseaux
- Structures de données
- Texte & strings
- VB .Net
- VB Script
- VBA
- Windows

Question 131

Comment déterminer si ma chaine de caractères est un nombre ?

Plusieurs méthodes sont à votre disposition pour tester si une chaîne de caractères représente une valeur est numérique. Nous vous montrerons deux des méthodes les plus fréquemment utilisées.

IsNumeric est une fonction incluse dans VB, souvent assez connue.

    MsgBox IsNumeric("12345,67")

Cette fonction, si elle a pour avantage d'être incluse dans Visual Basic, n'est pas pour exempte de "problèmes". En effet, sur certains systèmes, IsNumeric vous confirmera que "($1,23,,3.4,,,5,,E67$)" est bien une valeur numérique. S'il est vrai que cette chaîne représente un nombre, il est rare de permettre d'utiliser de telles notations dans une application. IsNumeric accepte aussi les représentations hexadécimales ("&h1F"), et scientifiques ("2E5" ou "2D5"). Si ces deux derniers tests sont plus pertinents, vous n'en avez pas forcément besoin.

Pour limiter à l'essentiel ce que peut entrer un utilisateur, vous pouvez aussi tester la chaîne contre une expression régulière :

    MsgBox IsNumber("12345,67")

    Private Function IsDigitsOnly(ByRef s As String) As Boolean
        IsDigitsOnly = Not s Like "*[!0-9]*" And LenB(s) > 0
    End Function
   
    Function IsNumber(ByVal Value As String) As Boolean
        ' Supprimez la ligne suivante si vous ne
        ' souhaitez pas traiter les signes plus/moins
        If Value Like "[+-]*" Then Value = Mid$(Value, 2)
        IsNumber = Not Value Like "*[!0-9,]*" And _
            Not Value Like "*,*,*" And _
            Len(Value) > 0 And Value <> "," And _
            Value <> vbNullString
    End Function

Souvent plus appropriée, cette méthode emploie des expressions régulières qui restent des traitements lents.

Ce problème peut aussi être vu comme étant un problème d'automates à état fini, méthode robuste pour de telles vérifications.

Voir aussi :

Date de publication : 05 décembre 2004
Dernière modification : 19 novembre 2006
Rubriques : Math
Mots-clés : numérique, nombre, string, isnumeric, expression régulière, expressions régulières