Convertir chaine en nombre (impossible ??)

[Résolu]
Signaler
Messages postés
19
Date d'inscription
dimanche 22 octobre 2006
Statut
Membre
Dernière intervention
19 avril 2008
-
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
-
Bonjour à tous, j'ai commencé à faire un petit programme vbs j'ai tout bien fait mais le seul petit problème c'est que je n'arrive pas à convertir une chaine en nombre.
Parce que j'utilise "inputbox" pour demander un nombre mais après il est inmanipulable car il est sous forme de chaîne.

J'ai essayé ce code que j'ai trouvé sur internet mais je ne comprends pas pourquoi il ne fonctionne pas.




Dim s as String
Dim i as Integer
s= InputBox ("Test", "Taper un nombre") 'Saisie dans une InputBox  d'un nombre par l'utilisateur.
's contient maintenant une chaîne de caractères, "45" par exemple
i=Integer.Parse(S)     'on transforme la chaîne s en Integer

Lorsque je le test, il me met :
Ligne : 1
Caract. : 7
Erreur : Fin d'instruction attendue



Avez-vous une solution à mon problème ?
Merci d'avance !

23 réponses

Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut,

Tu peux faire je pense : s = Clng(s) << attention au symbole décimal si il y a
                       s = Cint(s)
....
.......

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Même : s = Val(s)

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Pas CDex mais CDec => de toute facon[auteurdetail.aspx?ID=9517 JMO] a dit (avec raison d'ailleurs) quelle n'existe pas dans VBS mais en revanche Cint Existe mais ca limite la taille des nombres a entrer

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Et puis à la place de faire : Dim S As String >> Dim S as Long ou Integer ou Double suivant ton utilisation de la plage d'entrée de valeur dans ton InputBox..

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
9
Avec val() mais attention au nombre a virgule car selon les paramettres regionaux le caractere sera "," ou "." etc...

Cela est valable egalement pour l'espace des milliers

Tu peux guider l'utilisateur en lui fournissant un masque de saisie
genre "0 000.00"

@+

E.B.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Je vioens te tester ce code sous VS2005 et il marche très bien ton code.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
19
Date d'inscription
dimanche 22 octobre 2006
Statut
Membre
Dernière intervention
19 avril 2008

Merci beaucoup pour ces réponses rapides
mais le problème à ce que je vois viens de cette ligne : "Dim s as String"
J'ai remplacé as String par as Integer et Double mais les trois ça fait toujours la même erreur :
Ligne : 1
Caract. : 7
Erreur : Fin d'instruction attendue

Lorsque je met "Dim s" tout seul il n'y a pas de problèmes.

Pour info je programme avec notpad++ tout simplement et j'enregistre fichier.vbs, tou ça pour vous dire que j'utilise pas de logiciel comme des complieurs (enfin je sais pas trop si ça peut vous aider ^^, mais bon ! )
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Je vais peut-être dire une bourde, mais il me semble avoir vu cela:

Dim S AsStrting

Ou essaye de changer "s" en Dim Rep.....

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
"Pour
info je programme avec notpad++ tout simplement et j'enregistre
fichier.vbs, tou ça pour vous dire que j'utilise pas de logiciel comme
des complieurs (enfin je sais pas trop si ça peut vous aider ^^, mais
bon ! )"

Cherches pas plus loin ca vient du fait que tu essaie de mettre un code .NET dans un fichier et dans faire un VBScript PAS POSSIBLE.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonjour,

En vbs la déclaration des variables est implicite.

Dim s '<strike>as String</strike>
Dim i '<strike>as Integer</strike>
s= InputBox ("Test", "Taper un nombre",45) 'Saisie dans une InputBox ' d'un nombre par l'utilisateur.
's contient maintenant une chaîne de caractères, "45" par exemple

msgbox s

Le ' est utilisé pour documenter un script (correspond au REM).
De plus, il n'existe pas de fonction de conversion de chiffres en lettres.
En prenant le CInt de "s" + lecture de s (len + left vers right)  + tableaux des chiffres "un, deux, ....",
c'est réalisable, mais avec de la patience.

jean-marc
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Si tu veux adapter plus ou moins le code proposé il te faut faire ceci:

Dim s
Dim i
s = InputBox("Test", "Taper un nombre")
i = CDec(s)
MsgBox (i), ----
[code.aspx?ID=41455 By Renfield]

Mais si l'utilisateur entre "toto" ou n'importe quel texte tu va avoir une exception.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
y'en a qui aiment quand même bien le copier coller...

parce que du .Net dans du VBS, costaud, tout de même ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
re,

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
D'après ce que j'aperçois (en rouge et apparaissant de temps à autre dans le smiley de Julien)... je dirais que ce n'est pas du Copier/coller mais du CDPCL
(qu'on me donne 20 balles et j'accepte de traduire  ).
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
Centre Diocésain de Pastoral ,Catéchèse et Liturgie  ?





Renfield





Admin CodeS-SourceS

- MVP Visual Basic
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bé que nenni :
Collé D'un Puissant Coup de Langue, tout bêtement...
Yaka regarder la langue de Julien's smiley....
Patapé...
Vais faire ma siestita...
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
Re,

Salut Jacques,
Ai-je bien compris ?
L'utilisateur saisit deux mille sept et le gentil msgbox lui répond 2007 ...
A moins que ce ne soit l'inverse.
L'algo (jmfmarquien) existe surement.
Julien, pour info, CDec n'existe pas en vbs.

D'autre part, vous aurez tous remarqué que notre "cher" Admin DarkSidious n'a pas encore locké ce topic.

jean-marc
Messages postés
19
Date d'inscription
dimanche 22 octobre 2006
Statut
Membre
Dernière intervention
19 avril 2008

JMO tu pourrais me dire comment  faire (comme tu me dit que c'est réalisable)
Parce que ce problème est la seule chose qu'il me manque dans mon programme et je voudrais vraiment le finir !
Messages postés
19
Date d'inscription
dimanche 22 octobre 2006
Statut
Membre
Dernière intervention
19 avril 2008

euh jrivet la fonction Cdex() que tu me propose il me met type invalide 'Cdex'
Messages postés
19
Date d'inscription
dimanche 22 octobre 2006
Statut
Membre
Dernière intervention
19 avril 2008

Merci jrivet Cint() marche très bien ^^

Mais pk dis-tu que c'est limité ?