Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Général VBA

Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.

Réponse
 
Outils de la discussion
Vieux 27/02/2008, 23h06   #1 (permalink)
Invité de passage
 
Date d'inscription: février 2008
Messages: 4
Par défaut Différents type de string

Bonjour,

supposons que je veux vérifier si la valeur d'un string est numérique ( un chiffre) ou un ensemble de charactères, existe-t-il une telle fonction qui puisse le faire?

Par exemple:

verification(string) = 1 si c'est un chiffre
verification(string) = 0 si c'est des charactères autres.

Merci beaucoup!
cjb123 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/02/2008, 04h22   #2 (permalink)
Membre éprouvé
 
Date d'inscription: mai 2007
Messages: 493
Par défaut

Bonsoir,

Pour verifier qu'une chaine est interpretable comme un nombre:

Code :
MsgBox IsNumeric("123")
Pour convertir cette chaine en nombre:

Code :
MsgBox CDbl("123")
Cordialement,

Tirex28/
tirex28 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/02/2008, 09h26   #3 (permalink)
Inscrit(e)
 
Date d'inscription: juillet 2007
Localisation: au pays de la liberté d'esprit
Messages: 3 109
Par défaut

Bonjour tirex28,

Il ne faut jamais être trop confiant ...

La preuve :

Code :
MsgBox IsNumeric("243E57")
ucfoutu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/02/2008, 12h20   #4 (permalink)
Membre éprouvé
 
Date d'inscription: mai 2007
Messages: 493
Par défaut

Bonjour ucfoutu,

Citation:
Il ne faut jamais être trop confiant ...
La paranoia c'est pas bon non plus...

En ce qui me concerne ca renvoie vrai et ca me semble logique mais j'ai peut être raté quelque chose..

Au plaisir de te lire.

Tirex28/
tirex28 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/02/2008, 15h23   #5 (permalink)
Invité de passage
 
Date d'inscription: février 2008
Messages: 4
Par défaut

Merci tirex28,
La commande semble fonctionner de façon appropriée pour ce que je veux faire. Merci bien!!

Pourquoi l'exemple de ucfoutu renvoie t-il VRAI même si il contient une lettre ? S'agit-il d'un 'wildcard' ? d'un bogue?

Merci de m'éclaircir!!
cjb123 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/02/2008, 15h35   #6 (permalink)
Inscrit(e)
 
Date d'inscription: juillet 2007
Localisation: au pays de la liberté d'esprit
Messages: 3 109
Par défaut

Salut tirex28

Re bonjour, cjb123

Il existe mille et une façon pour ce faire ...

en voilà une, entre autres :

Code :
Private Sub Command1_Click()
  toto = "243E57"
  MsgBox IIf(toto Like (String(Len(toto), "#")), "que des chiffres", "pas que des chiffres")
  toto = "24357"
  MsgBox IIf(toto Like (String(Len(toto), "#")), "que des chiffres", "pas que des chiffres")
End Sub
Ps : pourquoi
Code :
MsgBox IsNumeric("243E57")
te renvoit vrai ?

Tout simplement parce que la fonction Isnumeric conseillée par Tirex28 vérifie uniquement la "numéricité" et que 243E57 EST un numérique (re-salut, Tirex28 )
Il n'y a là ni bogue, ni "Wildcard", ni .... paranoïa....(juste de la lucidité)

Dernière modification par ucfoutu ; 28/02/2008 à 15h53
ucfoutu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/02/2008, 19h02   #7 (permalink)
Membre expérimenté
 
Avatar de DarkVader
 
Date d'inscription: mai 2002
Localisation: . . . . . . . . . . . . . Mon Eden se trouve à l'Est de ceux qui se trouvent à l'Ouest
Messages: 928
Par défaut

Citation:
Envoyé par ucfoutu Voir le message
Bonjour tirex28,

Il ne faut jamais être trop confiant ...

La preuve :

Code :
MsgBox IsNumeric("243E57")
Ben encore heureux que "243E57" soit interprêtable comme un numérique de même que "&h4A" etc-
si maintenant les notations scientifiques ne l'était pas, il y aurait à se soucier !

Le code test objectif aurait du être

Code :
MsgBox iif(IsNumeric("243E57"),val("243E57"),faux)
Par contre teste "243A57" tu verras la différence.
__________________

« Si Dieu n'est pas marié, pourquoi parle-t-on toujours de sa grande Clémence ? »

Pensez aux liens
Rechercher - Google - Google Labs - AllApi
et avant de poster :
« A lire »
DarkVader est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/02/2008, 20h27   #8 (permalink)
Inscrit(e)
 
Date d'inscription: juillet 2007
Localisation: au pays de la liberté d'esprit
Messages: 3 109
Par défaut

Bonsoir, DarkVader,

Mais...

Nous sommes parfaitement d'accord sur ce point, précisément !

Le test que veut faire notre ami, toutefois, n'est pas en vue de savoir si un numérique a été saisi, mais si la saisie ne comporte que des chiffres (et aucune lettre) ...
ucfoutu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/02/2008, 20h39   #9 (permalink)
Membre expérimenté
 
Avatar de DarkVader
 
Date d'inscription: mai 2002
Localisation: . . . . . . . . . . . . . Mon Eden se trouve à l'Est de ceux qui se trouvent à l'Ouest
Messages: 928
Par défaut

Bonsoir UcFoutu,

Citation:
Envoyé par ucfoutu Voir le message
Bonsoir, DarkVader,

Mais...

Nous sommes parfaitement d'accord sur ce point, précisément !

Le test que veut faire notre ami, toutefois, n'est pas en vue de savoir si un numérique a été saisi, mais si la saisie ne comporte que des chiffres (et aucune lettre) ...
Ha bon !
Citation:
Envoyé par cjb123 Voir le message
Bonjour,

supposons que je veux vérifier si la valeur d'un string est numérique ( un chiffre) ou un ensemble de charactères, existe-t-il une telle fonction qui puisse le faire?

Par exemple:

verification(string) = 1 si c'est un chiffre
verification(string) = 0 si c'est des charactères autres.

Merci beaucoup!
Il y a par contre une correction qu'il aurait fallu apporter car la bonne syntaxe devrait être
Code :
isnumeric(replace(myString,".",","))
__________________

« Si Dieu n'est pas marié, pourquoi parle-t-on toujours de sa grande Clémence ? »

Pensez aux liens
Rechercher - Google - Google Labs - AllApi
et avant de poster :
« A lire »
DarkVader est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/02/2008, 20h58   #10 (permalink)
Inscrit(e)
 
Date d'inscription: juillet 2007
Localisation: au pays de la liberté d'esprit
Messages: 3 109
Par défaut

- Tout-à-fait d'accord également (je l'ai dit il y a moins de 4 jours dans une autre discussion) sur cette utilisation du Replace, pour les nombres non entiers.

- pour le reste : relis bien tout .... c'est une question de vocabulaire inaproprié de notre ami (entre chiffre et nombre )
ucfoutu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/02/2008, 09h43   #11 (permalink)
Membre expérimenté
 
Avatar de DarkVader
 
Date d'inscription: mai 2002
Localisation: . . . . . . . . . . . . . Mon Eden se trouve à l'Est de ceux qui se trouvent à l'Ouest
Messages: 928
Par défaut

Contrairement à toi je fonctionne en logique flou.
A la lecture d'un post il est facile de déceler selon la tournure de phrase qui utilise un vocabulaire choisi ou un vocabulaire non maitrisé
même si dans le second cas entre aussi bien le néophyte que le paresseux.
Il reste alors 2 solutions, faire à ta mode, comme si on ne comprenait pas sytématiquement,
ou faire comme si, quitte à comprendre de travers.
__________________

« Si Dieu n'est pas marié, pourquoi parle-t-on toujours de sa grande Clémence ? »

Pensez aux liens
Rechercher - Google - Google Labs - AllApi
et avant de poster :
« A lire »
DarkVader est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/02/2008, 18h17   #12 (permalink)
Invité de passage
 
Date d'inscription: février 2008
Messages: 4
Par défaut

Désolé si je n'ai pas été assez clair, je voulais bel et bien vérifier si un string ne contenait que des chiffres et aucune lettre, et non qu'il soit numérique.

Pour ce qui est du 'replace' des . par des , cela ne sera pas nécessaire, je suis au Québec dans une version anglaise d'Excel .

Merci de votre aide.
cjb123 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/02/2008, 19h34   #13 (permalink)
Inscrit(e)
 
Date d'inscription: juillet 2007
Localisation: au pays de la liberté d'esprit
Messages: 3 109
Par défaut

oui, j'avais bien deviné qu'il s'agissait de celà ...

Mais tu l'as, ta réponse (je te l'ai donnée plus haut :

La revoilà donc :

Code :
Private Sub Command1_Click()
  toto = "243E57"
  MsgBox IIf(toto Like (String(Len(toto), "#")), "que des chiffres", "pas que des chiffres")
  toto = "24357"
  MsgBox IIf(toto Like (String(Len(toto), "#")), "que des chiffres", "pas que des chiffres")
End Sub
Pour des entiers ne comportant que des chiffres.

Si tu dois par ailleurs traiter également des non entiers, il va falloir prendre en considération le séparateur décimal également...

Je te laisse chercher par toi-même d'abord et ne reviendrai que si tu ne t'en sors vraiment pas seul...
ucfoutu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/03/2008, 17h08   #14 (permalink)
Invité de passage
 
Date d'inscription: février 2008
Messages: 4
Par défaut

Pour vous mettre à jour, après quelques modifications tout fonctionne comme voulu. La fonction ' isnumeric() ' est exactement ce que je voulais.
Merci bien

- un néophyte de VBA mais qui aspire à devenir meilleur
cjb123 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 07/03/2008, 06h02   #15 (permalink)
Modérateur
 
Avatar de AlainTech
 
Date d'inscription: mai 2005
Localisation: Entre Liège et Bruxelles, suivant l'heure.
Âge: 54
Messages: 2 922
Envoyer un message via Skype™ à AlainTech
Par défaut

Problème résolu?

Clic sur le bouton , en bas de discussion.
__________________
Si on vous donne une info qui marche, DITES-LE!!!!
Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres!
N'oubliez pas de cliquer sur quand vous avez obtenu la réponse à votre question.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est actuellement connecté   Envoyer un message privé Réponse avec citation
NEWS MS-OFFICEFAQs OFFICETUTORIELS OFFICELIVRES OFFICESOURCES VBAACCESS

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Général VBA

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide