Indiquer s' il s' agit d' un chiffre ou pas

Résolu
SpoS Messages postés 22 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 26 novembre 2005 - 21 nov. 2005 à 13:22
SpoS Messages postés 22 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 26 novembre 2005 - 21 nov. 2005 à 22:01
Bonjour à tous,



Voila en essayant de creer un peti programme je me heurte a un "petit" obstacle, je voudrai en gros encrit en ligne de code :



Si A n' est pas un nombre alors

ou

Si A est une lettre alors



Aficher un message box etc...



Si vopus pouviez m' eclairer sur ce point :)



Merci

14 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
21 nov. 2005 à 21:37
if (keyascii < 48 or keyascii > 57) and keyascii <> 45 then
keyascii =0
beep
endif

45 étant la valeur ascii du caractère "-".

On peut aller comme ça plus loin encore. Si c'est pour faire une calculatrice, je te conseille de voir les nombreuses sources traitant de ce sujet sur le site. Tu progresserais encore plus vite.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
21 nov. 2005 à 21:39
bon pour la TextBox numérique c'est râté.

je rajouterais:

un seul signe "-" possible et toujours au début.







Private Sub Text1_KeyPress(KeyAscii As Integer)


Select Case KeyAscii


Case 45:


If Text1.SelStart > 0 Or InStr(Text1.Text, "-") > 0 Then


KeyAscii = 0


End If


Case 8, 48 To 57:


Case Else: KeyAscii = 0


End Select


End Sub





Daniel
3
olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 2
21 nov. 2005 à 13:34
dim ma_chaine as string
ma_chaine = inputbox("Veuillez saisir qqchose")
if isnumeric(ma_chaine) then
msgbox("C un numérique")
else
msgbox("C pas un numérique")
end if

Rollerman
0
SpoS Messages postés 22 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 26 novembre 2005
21 nov. 2005 à 19:00
A la place de de "isnumeric", il n' existe pas une autre fonction pour dire en gros, isword

pour indiquer



Si A est un lettre alors

Message box ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 2
21 nov. 2005 à 19:13
non lol

mais si tu sais que ce n'est pas un numérique..... c'est que c'est un chiffre :)



variante:

_____________________________________________

m ma_chaine as string

ma_chaine = inputbox("Veuillez saisir qqchose")

if not isnumeric(ma_chaine) then

msgbox("C pas un numérique")

else

msgbox("C un numérique")

end if
______________________________________________


Rollerman
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
21 nov. 2005 à 19:17
Dim car As String



' il y a toujours le Select Case

car = "A"

Select Case car

Case 65 To 90: MsgBox "Lettre Majuscule"

Case 97 To 122: MsgBox "Lettre Minuscule"

Case 48 To 57: MsgBox "Chiffre"

Case Else: MsgBox "Autres"

End Select



' ou si tu préfères

car = "A"

If car Like "[A-Za-z]" Then MsgBox "c'est une lettre"

car = "9"

If car Like "[0-9]" Then MsgBox "c'est un chiffre"













Daniel
0
SpoS Messages postés 22 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 26 novembre 2005
21 nov. 2005 à 19:39
Merci de votre aide mais je n' arrive pas a adapter cela pour mon logiciel.



Il s' agit en fait d' une petite calculatrice évolué (pour cacluler
calculer les racine des trinome de 2nd degrés), et lorsque l'
utilisateur rentre un lettre à la place d' un chiffre ( ce qui ne
devrai pas ariver vu qu' il s'agit d' une calculatrice) VB m' affiche
un message d' erreur.



Les trois textbox ou l' on peut écrire un nombre sont



A = val(Text1.text)

B = val(Text2.text)

C = val(Text3.text)



- Serai t' il possible par exemple d' interdire l' écriture des lettre ou autre chose que les chiffre ?

- Ou afficher lorsque l' utilisateur n' indique
pas de nombre un message box "Veuillez saisir un chiffre"


Merci :)
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
21 nov. 2005 à 19:40
Salut, moi j'aime bien les soluces proposées par Daniel. Au cas où tu ne connaîtrais pas les valeurs ascii des caractères, tu peux coder aussi, partant de ta question de depart qui supposait que A ne contient qu'UN seul caractère :

Select Case A
Case "A" To "Z", "a" To "z"
MsgBox "c'est une lettre"
Case "0" To "9"
MsgBox "c'est un chiffre"
Case Else
MsgBox "autre"
End Select


'Ou, si tu veux détailler
Select Case A
Case "A" To "Z"
MsgBox "c'est une lettre majuscule"
Case "a" To "z"
MsgBox "c'est une lettre minuscule"
Case "0" To "9"
MsgBox "c'est un chiffre"
Case Else
MsgBox "autre"
End Select

Si A contient plus d'UN caractère, il faut procéder autrement.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
21 nov. 2005 à 19:45
Oups, pas vu ton dernier post, dans ce cas, tu mets ce code dans l'évènement keypress de tes textboxes :

if keyascii < 48 or keyascii > 57 then
keyascii =0
beep
endif

De cette façon, on ne peut saisir que des chiffres avec un tit bip signalant l'erreur.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
21 nov. 2005 à 19:49
si c'est une moquerie, je corrige:





Select Case Asc(car)






mais apparemment , c'est pas un seul caractères.


dans ce cas faudrait savoir si faut accepter le point décimal ou pas.

pour que des chiffres faire une TextBox numérique, ou solution de CanisLupus.

sinon voir les nombreuses sources qui parlent de ce sujet


Daniel
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
21 nov. 2005 à 20:20
Non, Daniel, ce n'est pas une moquerie. Je t'ai même fait confiance et ai carrément zappé ce coup-là. Merci d'avoir corrigé de toi-même.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
SpoS Messages postés 22 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 26 novembre 2005
21 nov. 2005 à 21:19
Merci de votre aide à tous,



Canis Lupus ton truc marche parfaitement,



if keyascii < 48 or keyascii > 57 then

keyascii =0

beep

endif



Juste une petit truc, Je voudrai pouvoir aussi écrire le signe - pour
les calculs, comment c' est possible de le rajouter a partir de la même
idée.



Sinon j' aurai une autre solution, c' est de grisé le bouton Calculer
tant que les valeur comprise dans A, B et C ne sont pas des nombres (
signe - comprit )



Je comprend que mes questions vous paraisse un peu "?!?" mais je debute
dans le monde de Vb ( et je n' ai luq encore que la moitié de mon livre
)



Merci :)
0
SpoS Messages postés 22 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 26 novembre 2005
21 nov. 2005 à 21:25
Pour Desactivé le bouton false un truc à partir de sa :



If text1.text = KeyAscii < 48 Or KeyAscii > 57 Then

Command1.Enabled = True

Else

Command1.Enabled = False



Mais, sa ne fonctionne pas, ou se situe mon erreur :/
0
SpoS Messages postés 22 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 26 novembre 2005
21 nov. 2005 à 22:01
Merci à vous 3.

J' ai finalement opté pour la réponse de Daniel car elle apporte un
petit plus en ne permettant que de mettre de signe - en avant.



La réponse de CanisLupus marche aussi, d' ailleur en reprenant l' idée
du Beep, j' ai ajouter cette ligne qui permet quand l' utilisateur
entre autre chose qu' une lettre d' emmetre un son Beep.




if (keyascii < 48 or keyascii > 57) and keyascii <> 45 then

Beep

endif



Encore merci :)
0
Rejoignez-nous