Fonction isnumeric améliorée (empêche les exposants)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 818 fois - Téléchargée 29 fois

Contenu du snippet

Certaines chaines de caractères (comme "00100E86" par exemple") sont considérées comme des numériques (càd que le E est considéré comme le symbole Exposant). Or, dans certains cas, il ne faut pas considérer le "E" comme exposant mais bien comme une lettre, et de ce fait, la chaine de caractère n'est plus numérique, mais bien alphanumérique. La fonction retourne True si la chaine est exclusivement composée de chiffres, tous les autres caractères étant exclus (boucle sur les codes ascii 32 à 254).

Source / Exemple :


Function WSIsNumeric(Value As Variant) As Boolean

    Dim Compteur As Byte
    
    Select Case IsNumeric(Value)
        Case True
            WSIsNumeric = True
            For Compteur = 32 To 254
                Select Case Compteur
                    Case 48 To 57 '0 à 9
                    Case Else
                        Select Case InStr(1, Value, Chr$(Compteur))
                            Case 0
                            Case Else
                                WSIsNumeric = False
                                Exit Function
                        End Select
                End Select
            Next
        Case Else
            WSIsNumeric = False
            Exit Function
    End Select
    
End Function

Conclusion :


La fonction IsNumeric est surtout utilisable dans VBA (Access, Excel...)

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
7 août 2006

J'ai vraiment besoin d'aide. Dans mon programme, il y a une zone de texte qui sert à l'utilisateur a s'inscrire. Quand il clique sur le boutton inscription, le code doit empècher la zone de texte de contenir une valeur numérique. Alors moi j'ai ecrit:

'Vérification du contenu de la zone de texte Utilisateur

If Id_Utilisateur = "" Then

MsgBox " Vous devez saisir un nom d'utilisateur ! ", vbInformation, " Erreur! "

Txt_User.SetFocus

Exit Sub


ElseIf IsNumeric(Id_Utilisateur) = True Then

MsgBox " Le nom de l'utilisateur ne doit comprendre aucun chiffre ! ", vbInformation, " Erreur! "

Txt_User.SetFocus

Exit Sub



Il y a une petit probleme. S'y je met de l'alpha-numérique dans la zone de texte il y a pas de message d'erreur alor que j'en voudrait un.

Svp Quelqu'un pourrait m'aider....
Messages postés
24
Date d'inscription
lundi 15 décembre 2003
Statut
Membre
Dernière intervention
24 novembre 2005

Moi perso je cherche justement a faire cette fonction, car comme toi j'ai des truc zarbe a cause des format monaitaire ( placer F comme valeur de monaite et dans ce cas vous avez F344 ( 344 c'est nimporte quelle chiffre en fait, la c de l'exemple) et bien isnumeric de VBS dit vrai car considere F comme symbole monetaire et pas comme une letre.

merci a toi

mais perso je vais ajouter a ta fonction juste 2 case pour les codes de + et -
Messages postés
7
Date d'inscription
lundi 4 avril 2005
Statut
Membre
Dernière intervention
10 avril 2005

oups, j'ai le "then" a la fin de la ligne if.
Messages postés
7
Date d'inscription
lundi 4 avril 2005
Statut
Membre
Dernière intervention
10 avril 2005

[merci de me dire que ma fonction peut être optimisée, mais alors sois constructif, et indique-nous comment ... ???]

et plus loint

[ il est certain que cette fonction peut être améliorée/optimisée/modifiée/etc... à vos besoins, mais personnellement, ma fonction répond exactement aux miens]


WSIsNumeric(Value As Variant) As Boolean

Dim Compteur As Byte

WSIsNumeric = False

if IsNumeric(Value) and instr(value,"E")=O and instr(value,"D")=0

WSIsNumeric = True
End IF
end function

Et voila
Messages postés
9
Date d'inscription
samedi 22 décembre 2001
Statut
Membre
Dernière intervention
10 avril 2005

Pour resituer un peu mon besoin, access considère les chaînes "00100D18" et "00100E25" comme étant des chaines numériques, alors que dans mon cas, elles doivent être considérées commes alphanumérique (vu qu'il y a des lettres dedans). De ce fait, la fonction standard VBA IsNumeric ne retourne pas le résultat que je veux. Je n'ai pas besoin de vérifier le signe, car la valeur ne peut jamais être négative (il s'agit en fait de centres de frais, en comptabilité analytique). Comme j'ai expliqué plus haut, il est certain que cette fonction peut être améliorée/optimisée/modifiée/etc... à vos besoins, mais personnellement, ma fonction répond exactement aux miens.
Afficher les 16 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.