Que des chiffres dans un textbox

Résolu
flamcy Messages postés 58 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 14 avril 2009 - 8 juil. 2007 à 02:05
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 28 juin 2008 à 17:38
Bonjour à tous,


je voudrais forcer l'utilisateur à ne saisir que des chiffres dans un "textbox_change".


mon code ci-dessous marche à peu pres mais pas à tous les coups, surtout si je fais un "retour effacer" s'il n'y a plus de caractère... pouvez-vous m'aider  (si j'ai été assez clair)


mon code:



Public diffconso As Long, releve1er As Long, releve2nd As Long<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>






 





Private Sub Saisie1_Change()


releve1er = Saisie1.Text


End Sub



 




Private Sub Saisie2_Change()


releve2nd = Saisie2.Text


End Sub



 




diffconso = releve2nd - releve1er



 





If IsNumeric(releve1er) = False Then





RECOMMENCER:




reponse1 = MsgBox("Les relevés doivent être uniquement en chiffres", vbExclamation, "Recommencer la saisie des relevés")



 
If reponse1 = vbOK Then






  Saisie1.SetFocus






  Exit Sub






  End If





Else: If IsNumeric(releve2nd) = False Then GoTo RECOMMENCER




End If


MERCI D'AVANCE

12 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 juil. 2007 à 02:58
Salut
Tu tapes "chiffre textbox" dans la case Rechercher et tu auras ta réponse

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 juil. 2007 à 11:50
salut,
et pourquoi spécialement au _change ?
http://www.codyx.org/snippet_textbox-numerique-seulement_53.aspx

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
3
flamcy Messages postés 58 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 14 avril 2009
8 juil. 2007 à 12:00
JACK : merci, je vais jetter un oeil en essayant de comprendre. j'avais mal géré ma recherche. je cherchais avec "textbox+isnumeric"... faut maintenant que je déchiffre tout ça car le but est aussi de comprendre

PCPT : ben parce-que je ne vois pas comment faire autrement.  je vais regarder ton lien.

MERCI à vous 2
0
flamcy Messages postés 58 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 14 avril 2009
8 juil. 2007 à 15:49
un grand merci à vous 2,
apres avoir fais le tri (qui a duré!), j'ai fais un mix de 2 codes que je n'arrive pas à retrouver tellement j'ai ouvert de pages (dslé pr les auteurs) dont voici :
(j'avais bcp galéré car j'avais déclaré saisie1 as Long, j'emploie donc Clng(saisie1) par la suite)

********
Public saisie1 As String

Private Sub Saisie1_Change()
releve1er = Saisie1.Text
End Sub

Private Sub Saisie1_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0123456789]" And Not KeyAscii = 8 Then
Beep
KeyAscii = 0
End If
End Sub
0

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

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
8 juil. 2007 à 16:57
Petit conseil... évite d'utiliser des noms de variables identiques aux noms des contrôles
>>  saisie1

MPi
0
flamcy Messages postés 58 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 14 avril 2009
8 juil. 2007 à 17:02
dslé je me suis trompé en retappant la 1ere ligne (comme ca, ca pouvait pas marcher )
c'est:


Public releve1er as string

bien vu
0
flamcy Messages postés 58 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 14 avril 2009
28 juin 2008 à 12:09
bonjour à tous,

j'ai un nouveau pb concernant toujours ce topic.
comment faire pour répéter le code suivant sur 20 textbox sans devoir mettre le code 20 fois ?


j'ai vu l'utilisation de Me.controls mais je ne comprend pas comment ça marche et n'arrive pas à faire l'analogie avec ma situation. Cette fois-ci c'est dans le but de récupérer les valeurs pour les mettres sur une ligne constituée de 20 cellules excel (VBA). Donc une fois que j'aurais compris la boucle, je pense pouvoir arriver à mes fins.

voici le code: (qui pourra peut-être servir à certains)



Private Sub TextBox1_KeyPress(KeyAscii As Integer)<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>





If Not Chr(KeyAscii) Like "[0123456789]" And Not KeyAscii = 8 And Not KeyAscii = 13 Then





Beep





KeyAscii = 0





Else





If KeyAscii = 13 Then 'si appui sur la touche "entrée"





KeyAscii = 0 'supprimer le bip lors de l'appui sur la touche





Command_calculer_Click





End If





End If





End Sub
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 juin 2008 à 12:53
salut,
(un an déjà ? ^^)

regarde au niveau des groupes de contrôles, c'est à dire copier 19 fois ton contrôle pour avoir alors la propriété index qui change.
tu auras alors un autre argument (index) dans l'évènement et tout ton code sera traité une seule fois.

un peu compliqué dit comme çà, essaye çà va aller tout seul (juste copier tes contrôles, supprimer ton code depuis la sub _change, et double-cliquer sur une des textbox...)

++

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
flamcy Messages postés 58 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 14 avril 2009
28 juin 2008 à 13:26
salut,

oui déjà un an !! car je cherche dans les topics avant de poster et en général je trouve mon bonheur mais là j'avoue, je coince.
comme tu dis, c'est un peu compliqué dis comme ça. Je ne vois pas trop. je suis loin d'etre un pro en la matière et j'ai appri le vb tout seul donc je n'ai certainement pas été dans le bon ordre en apprenant.

le pire c'est que c'est juste une petite boucle à la c....!

j'essaierai de regarder la semaine prochaine (un peu plus de dispo)

merci quand-meme
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 juin 2008 à 14:36
essaye juste avec un nouveau projet :

tu poses une textbox par défaut (nommée Text1 )
tu la sélectionnes
ctrl+c
ctrl+v => VB va te demander si tu veux faire un groupe de contrôle : [OUI]
ctrl+v => plus de question
ctrl+v
ctrl+v
ctrl+v

ensuite double-click sur une tes textbox
le code suivant va apparaître :
Private Sub Text1_Change(Index As Integer)

End Sub

alors que sans groupe il aurait mis :
Private Sub Text1_Change()

End Sub

dans l'évènement copie ceci :
Me.Caption = "ZONE (" & Index & ") : '" & Text1(Index).Text & "'"

lance le projet puis saisi du texte dans tes zones en regardant ce qui s'affiche dans la barre de titre de ta fenêtre
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
flamcy Messages postés 58 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 14 avril 2009
28 juin 2008 à 17:33
en effet, je vois mieux ce que tu voulais dire mais je n'arrive pas à l'adapter à ma situation. je pensais que le "Me" était autre chose car là tu t'en sert pour la form en général. je croyais que ca permettait de selectionner toutes les textbox.
tu sais pas où je peux trouver un complément d'info sur Me ?
j'ai beau chercher, je tombe toujours sur des ex et pas bcp d'explications.

merci
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 juin 2008 à 17:38
me c'était pour l'exemple, pour afficher dans le titre de ta form
mais de toute façon çà n'est faisable (un groupe) que pour une seule et unique form...
 
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ]
0
Rejoignez-nous