DerWanderer
Messages postés9Date d'inscriptionlundi 26 juin 2006StatutMembreDernière intervention18 novembre 2006
-
14 août 2006 à 02:27
DerWanderer
Messages postés9Date d'inscriptionlundi 26 juin 2006StatutMembreDernière intervention18 novembre 2006
-
14 août 2006 à 21:56
Bonjour,
J'ai écrit cette sub routine
Private Sub TValidate(ByRef T As TextBox, ByVal LgMAxVal As Long)
Dim Str_Chaine As String
Dim LgNombre As Long
Str_Chaine = ""
LgNombre = CLng(T.texte)
If LgNombre >= 0 And LgNombre <= LgMAxVal Then
Cmd_Validate.Enabled = True
Else
Str_Chaine = "Invalid Value, must be between 0 and " + CStr(LgMAxVal)
Call MsgBox(Str_Chaine, vbExclamation, "Editing Database Value")
Cmd_Validate.Enabled = False
T.SetFocus
End If
End Sub
celà me semble basique
Mais quand je l'appelle par exemple avec un textbox qui s'appele Txt_Textbob
Call Tvalidate(Txt_Textbox, 9999)
j'ai une erreur de type et le debugger VB6 montre que je ne passe pas la texbox mais la valeur de la propriété text de cette textbox à ma procédure
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 14 août 2006 à 02:45
Bonsoir,
Essaies
Private Sub TValidate(T As TextBox, LgMAxVal As Long)
sans ByRef ni ByVal
Ensuite je ne vois pas pourquoi tu passes TextBox en argument puisque tu testes sur TextBox.Text.Passes plutôt une chaine.
Si tout cela pour donner le focus à ton TextBox, transformes ta procédure en fonction
booléenne.et selon qu' elle est False ou True, tu redonnes le focus à ton TextBox
ou tu quittes .
t' es d' accord avec moi ?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 14 août 2006 à 08:18
passer la variable lgMaxVal par valeur ou par référence ne changera rien (il est d'ailleurs recommandé de passer la variable par valeur et non référence, et l'inverse pour le TextBox, c'est bien plus sûr !).
Par contre, à quelle ligne apparait l'erreur ?
essaye avec :
Private Sub TValidate(ByRef T As Control, ByVal LgMAxVal As Long)
J'ai jamais eu ce genre de problème, et pourtant j'utilise ce genre de fonction depuis belle lurette !
DerWanderer
Messages postés9Date d'inscriptionlundi 26 juin 2006StatutMembreDernière intervention18 novembre 2006 14 août 2006 à 13:08
Déjà merci de vos réponses
Merci aussi pour pour Text au lieu de Texte, ces fautes d'inatentions sont une plaie
Bon pour vous donner plus d'infos et pour mieux comprendre ma problematique j'apporte les éléments suivants
J'ai 11 textbox qui doivent recevoir des valeurs Long, elles vont selon les cas de 0 à 9999, 99999, 999999
Par les 2 sub suivantes je valide déjà que que seuls des chiffres sont saisis
Private Sub Txt_AntiAirValue_KeyPress(ByRef KeyAscii As Integer)
Call TesteTouche(KeyAscii)
End Sub
Private Sub TesteTouche(ByRef KeyAscii As Integer)
Dim Str_Chaine As String
If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
Str_Chaine = "Numbers only please"
Call MsgBox(Str_Chaine, vbExclamation, "Editing Database Value")
KeyAscii = 0
End If
End Sub
Bien, mais pour valider les valeurs saisies je le fais à la fin via un bouton de validation qui lance pour chaque textbox la validation
Private Sub TValidate(ByRef T As TextBox, ByVal LgMAxVal As Long)
Dim Str_Chaine As String
Dim LgNombre As Long
Str_Chaine = ""
LgNombre = CLng(T.text)
If LgNombre >= 0 And LgNombre <= LgMAxVal Then
Cmd_Validate.Enabled = True '
Else
Str_Chaine = "Invalid Value, must be between 0 and " + CStr(LgMAxVal)
Call MsgBox(Str_Chaine, vbExclamation, "Editing Database Value")
Cmd_Validate.Enabled = False
T.SetFocus
End If
End Sub
Et comme je l'ai écrit dans mon premier message quand je passe -> call TValidate(Txt_AntiAirValue,99999) et ben Txt_AntiAirValue est vu comme Txt_AntiAirValue.Text soit "12345" et non comme l'objet textbox lui même
et j'ai un message d'erreur "type imcompatible"
J'ai aussi essayé de mettre (T as Control) mais j'ai le même résultat, je pense qu'il y qqchose qui force le paramètre a être vu comme la propriété Text du textbox!! MAIS QUOI ? mystère et boule de gomme
Der Wanderer
Vous n’avez pas trouvé la réponse que vous recherchez ?
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 14 août 2006 à 18:52
Bonjour,
Est-ce que au moment ou tu tapes CLng(T. la liste des méthodes
d' un TextBox apparait ?
Si oui le T est reconnu comme objet Text, sinon il ne l' est pas.
DerWanderer
Messages postés9Date d'inscriptionlundi 26 juin 2006StatutMembreDernière intervention18 novembre 2006 14 août 2006 à 21:56
Bon je suis plus que perplexe.
J'ai juste modifié texte en text, puis declaré comme proposé ci-dessus, T as Control, et PAF ( non, pas chocapic) c'est tombé en marche, plus fort, à tout zazard j'ai remis T as Textbox et la celà continue à fonctionner !!!!!, je précise aussi à tout hasard que j'ai rebooté ma machine entre temps !!!
L'informatique à ses raisons que la raison ne connait pas!!!
Pour répondre aux questions oui la sub est dans la feuille et oui "T." vois s'afficher les propriétés