Textbox, filtre pour un nombre

Textbox, filtre pour un nombre - VB/VBA/VBS - Programmation

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

Reply

Marsh Posté le 07-02-2006 à 12:50:53   

Reply

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


---------------
now : do nothing
Reply

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


Message édité par kiki29 le 07-02-2006 à 15:05:44
Reply

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.

Reply

Marsh Posté le 07-02-2006 à 15:40:57    

Et la fonction IsNumeric() elle vous tente pas ?

Reply

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

Reply

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

Reply

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


Message édité par kiki29 le 07-02-2006 à 19:38:29
Reply

Marsh Posté le 07-02-2006 à 22:03:43    

Asmfox_sweden a raison. // dslé j'avais pas vu si simple ...


Message édité par knakes le 07-02-2006 à 22:04:00

---------------
now : do nothing
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed