Textbox, filtre pour un nombre - VB/VBA/VBS - Programmation
Marsh Posté le 07-02-2006 à 13:49:04
If 10 < CDec(txt_age) Or 99 > CDec(txt_age) Then
'OK
Else
MSgbox "Ceci n'est pas un nombre"
EndIf
----
LE soucisn c'est que si ce n'est pas un nombre, c'est VB qui génère une
erreur. Tu peux contourner en :
Private Sub txt_age_Change()
On error Goto Error
txt_age.Text = CDec(txt_age)
'Si tout c'est bien passé
Exit Sub
'Sinon, s'il y a une erreur
error:
Msgbox "Ce n'est pas un nombre"
End Sub
Tu peux même personnaliser l'erreur
error:
If Err.Number = xx Then
Msgbox "Ce n'est pas un nombre !"
Exit Sub
EndIf
Msgbox "Erreur système ! "
End Sub
Marsh Posté le 07-02-2006 à 14:50:14
Définir des constantes du type
Const SaisieDecimale As String = ".,0123456789" & vbCr & vbBack
Const SaisieEntiere As String = "0123456789" & vbCr & vbBack
Const Point as string ="."
Const Virgule as string =","
Puis utiliser xxx_KeyPress ici pour une saise décimale avec
substitution . par , et un seul séparateur décimal de permis
ici en systeme français la virgule
Private Sub xxxx_KeyPress(KeyAscii As Integer)
If KeyAscii = Asc(Point) Then
If InStr(xxxx, Virgule) = 0 Then
KeyAscii = Asc(Virgule)
Else
KeyAscii = 0
End If
ElseIf InStr(SaisieDecimale , Chr(KeyAscii)) = 0 Then
KeyAscii = 0
ElseIf InStr(xxxx, Virgule) > 0 And KeyAscii = Asc(Virgule) Then
KeyAscii = 0
End If
If KeyAscii = 13 Then SendKeys "{TAB}": KeyAscii = 0
End Sub
pour une saisie d'entiers
Private Sub xxxx_KeyPress(KeyAscii As Integer)
If InStr(SaisieEntiere , Chr(KeyAscii)) = 0 Then KeyAscii = 0
If KeyAscii = 13 Then SendKeys "{TAB}": KeyAscii = 0
End Sub
Marsh Posté le 07-02-2006 à 15:06:29
Je vais essayer tout ça.
Merci.
Oui mon gros problème si je passais par les erreurs, je ne savais pas comment les gérer.
Encore merci.
Marsh Posté le 07-02-2006 à 15:57:16
le but est de containdre la saisie utilisateur dans le champ de valeurs
que l'on s'est fixé . IsNumeric ne présente strictement aucun intéret dans ce cas
Marsh Posté le 07-02-2006 à 19:11:04
If IsNumeric(txt_age.Text) = True Then
sujet.age = CDec(txt_age)
Else
MsgBox "Ceci n'est pas un nombre"
End If
Ca marche très bien, et c'est plus simple que la gestion d'erreur. Encore merci
Marsh Posté le 07-02-2006 à 19:38:03
Un lien qui présente de nombreux exemples succincts permettant un bon démarrage en VB6 et Net
http://www.vb-helper.com/index_categories.html
Marsh Posté le 07-02-2006 à 22:03:43
Asmfox_sweden a raison. // dslé j'avais pas vu si simple ...
Marsh Posté le 07-02-2006 à 12:50:53
Bonjour,
Je cherche désespérement à faire une conversion et un filtre.
Pour éviter de faire des phrases compliqué pour expliquer ce que je veux faire exactement, voila l'algorithme :
Private Sub txt_age_Change()
'convertir le texte de txt_age en nombre
'si 10<valeur<99 alors
'OK
'sinon
'message "Ceci n'est pas un nombre"
'Fin si
End Sub
J'espère que vous avez bien compris ce que je veux faire. C'est sans doute très simple mais je ne trouve pas tout à fait comment faire. Je suis un débutant.
Merci