PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → Tester si une chaîne est un numérique
Tester si une chaîne est un numérique
Débuté par Pascal Martin, 07 jan. 2004 17:42 - 9 réponses
Posté le 07 janvier 2004 - 17:42
Bonjour,

Est-ce qu'il existe avec Windev 7.5 un moyen simple de tester si le contenu
d'une variable texte contient un nombre ? (comme le isnumeric sous VB)
Posté le 07 janvier 2004 - 18:15
Si Val(ls_Texte) = 0 Alors //ls_Texte est la variable texte à tester
Si ls_Texte <> "0" Alors
Info("Contenu non numérique")
Sinon
Info("Contenu numérique")
Fin
Sinon
Info("Contenu numérique")
Fin

Cordialement
--
Enlevez le "antispam." de mon adresse mail pour me répondre
--------------

"Pascal Martin" <nospam.pmartin@stolz.fr> a écrit dans le message de
news:3ffc26f9@news....

Bonjour,

Est-ce qu'il existe avec Windev 7.5 un moyen simple de tester si le

contenu
d'une variable texte contient un nombre ? (comme le isnumeric sous VB)




---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.558 / Virus Database: 350 - Release Date: 02/01/2004
Posté le 08 janvier 2004 - 18:26
"Tony Triolo" <antispam.tony.triolo@free.fr> wrote:

Si Val(ls_Texte) = 0 Alors //ls_Texte est la variable texte à tester
Si ls_Texte <> "0" Alors
Info("Contenu non numérique")
Sinon
Info("Contenu numérique")
Fin
Sinon
Info("Contenu numérique")
Fin

Cordialement
--
Enlevez le "antispam." de mon adresse mail pour me répondre
--------------

"Pascal Martin" <nospam.pmartin@stolz.fr> a écrit dans le message de
news:3ffc26f9@news....

Bonjour,

Est-ce qu'il existe avec Windev 7.5 un moyen simple de tester si le
contenu

d'une variable texte contient un nombre ? (comme le isnumeric sous VB)




---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.558 / Virus Database: 350 - Release Date: 02/01/2004


Si Val(ls_Texte) = 0 Alors //ls_Texte est la variable texte à tester
Si ls_Texte <> "0" Alors
Info("Contenu non numérique")
Sinon
Info("Contenu numérique")
Fin
Sinon
Info("Contenu numérique")
=>> ICI grosse erreur car val("31A") renvoye 31

Fin
Posté le 09 janvier 2004 - 10:44
Si tu veux savoir si le champs est un numérique uniquement il faut que tu
teste chaque caractère et que tu vérifies si il est numérique ou non car
la commande
toto="31A"
VAL(toto) renvoie 31 donc pas bon !

je te propose le code suivant :
//
i est une chaîne
MaChaine, Ch sont des chaînes
bNumerique est un booléen = Vrai

POUR i= 1 A Taille(MaChaine)
Ch=MaChaine[[i]]
SI Asc(Ch)<48 OU Asc(Ch)>57 ALORS
bNumerique = Faux
SORTIR
FIN
FIN
//
SI bNumerique ALORS
Info("chaine numérique")
SINON
Info("chaine alpha")
FIN
Posté le 13 janvier 2004 - 15:44
Merci... je suis surpris qu'ils n'aient pas pensé à inclure cette fonction
dans le langage.


"Manu" <contact@fasil.fr> a écrit dans le message news: 3ffe6a00@news....


Si tu veux savoir si le champs est un numérique uniquement il faut que tu
teste chaque caractère et que tu vérifies si il est numérique ou non car
la commande
toto="31A"
VAL(toto) renvoie 31 donc pas bon !

je te propose le code suivant :
//
i est une chaîne
MaChaine, Ch sont des chaînes
bNumerique est un booléen = Vrai

POUR i= 1 A Taille(MaChaine)
Ch=MaChaine[[i]]
SI Asc(Ch)<48 OU Asc(Ch)>57 ALORS
bNumerique = Faux
SORTIR
FIN
FIN
//
SI bNumerique ALORS
Info("chaine numérique")
SINON
Info("chaine alpha")
FIN
Posté le 13 janvier 2004 - 15:58
Salut,

Un truc que j'utilises souvent pour ça, en une ligne :

b_Resultat est un boolean
toto est une chaine="31A"

b_Resultat=(toto=NumériqueVersChaine(Val(toto))


++

"Pascal Martin" <nospam.pmartin@stolz.fr> wrote:

Merci... je suis surpris qu'ils n'aient pas pensé à inclure cette fonction
dans le langage.


"Manu" <contact@fasil.fr> a écrit dans le message news: 3ffe6a00@news....


Si tu veux savoir si le champs est un numérique uniquement il faut que

tu
teste chaque caractère et que tu vérifies si il est numérique ou non car
la commande
toto="31A"
VAL(toto) renvoie 31 donc pas bon !

je te propose le code suivant :
//
i est une chaîne
MaChaine, Ch sont des chaînes
bNumerique est un booléen = Vrai

POUR i= 1 A Taille(MaChaine)
Ch=MaChaine[[i]]
SI Asc(Ch)<48 OU Asc(Ch)>57 ALORS
bNumerique = Faux
SORTIR
FIN
FIN
//
SI bNumerique ALORS
Info("chaine numérique")
SINON
Info("chaine alpha")
FIN


Posté le 22 mai 2019 - 09:46
Ca pose encore le problème avec les valeurs décimales qui peuvent être écrites avec un point "." ou une virgule ","
Personnellement, je n'aime pas travailler avec les virgules, mais on n'est pas à l'abris de tomber dessus, en particulier en travaillant avec des fichiers de type CSV...
Il me semble qu'une fonction de contrôle serai vraiment bienvenue... Ou en rajoutant une option de type de format autorisé à la fonction IsNumeric provoquant un rejet sur des entrées du type "3Bis", "4.21€", "2 840 320", "3.240,13", ...
Posté le 22 mai 2019 - 11:03
Oui il y a aussi la fonction estnumerique


https://doc.pcsoft.fr/fr-FR/?3013035&name=EstNumerique
Membre enregistré
3 333 messages
Popularité : +93 (137 votes)
Posté le 27 mai 2019 - 19:04
go24 ,est numérique n'existe que depuis la version 9
Membre enregistré
3 883 messages
Popularité : +227 (347 votes)
Posté le 28 mai 2019 - 00:14
Popoy a écrit :
> go24 ,est numérique n'existe que depuis la version 9
Depuis 2004, je pense qu'il est passé a une version supérieure à 9

--
Il y a peut être plus simple, mais, ça tourne