Retour du contenu d'une textbox (trivial?!)

cs_darkbol Messages postés 61 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 6 décembre 2004 - 16 juin 2004 à 10:04
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 - 16 juin 2004 à 11:30
Bonjour,

Je veux simplement retourner la valeur de ma textbox et je comprends pas pq ca plante...

Voila le pb : j'ai créé une frame ou j'ai mis 4 textbox pour 4 valeurs de Xmin, Xmax, Ymax et Ymin.

Et je veux simplement récupérer les valeurs interieures avec mon petit val(XminVal.text). Je sais ke c bete et simple mais je comprends vraiment pas, mes declarations ont lair bonnes et j'ai réussi les tuto de vb (calto..)

voici mon code :



Option Explicit
Public Xmin As Double
Public Ymin As Double
Public Xmax As Double
Public Ymax As Double
Public MapFrame As Object

Private Sub btnCancel_Click(index As Integer)
Masterchoice.Hide
Accueil.Show
End Sub

Private Sub btnReset_Click()
XminVal.Text = ""
YminVal.Text = ""
XmaxVal.Text = ""
YmaxVal.Text = ""
End Sub

Public Sub Form_Load()

Static XminVal, YminVal, XmaxVal, YmaxVal As Object

ImportFrame.Enabled = False
CreateFrame.Enabled = True

Xmin = 0
Xmax = 0
Ymax = 0
Ymin = 0

End Sub

Private Sub XminVal_Change(index As Integer)
Xmin = Val(XminVal.Text)
End Sub

</td></tr></table>

L'erreur qu'ils me relèvent est

Object variable or With block variable not set

Merci pour votre aide!

"j'aime bien les nuages... :-|"

7 réponses

cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
16 juin 2004 à 10:21
La syntaxe standard de l'évènement change est
Private Sub XminVal_Change()

Donc la présence de l'argument index as Integer signifie que tu as crées (volontairement ou non) un groupe de contrôle.

Donc ton instruction devrait être
Xmin = Val(XminVal(index).Text)

Ou alors tu supprimes le groupe de contrôle.

NB : je suppose que tu as pu créer tes contrôles par copier/coller puis après tu les as renommé ... et à la qestion sur le premier coller tu as répondu oui.
0
capoueidiablo Messages postés 316 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 1 février 2010 1
16 juin 2004 à 10:27
Essaille avec ca :
Private Sub XminVal_Change(index As Integer)
   Xmin = CDbl(XminVal.Text)
End Sub


Lors de ta déclaration des variables XminVal, YminVal, XmaxVal, YmaxVal seul YmaxVal est défini comme Objets les autres sont des variants pour bien faire il faut mettre :

Dim XminVal As Object, YminVal As Object, XmaxVal As Object, YmaxVal As Object


Mini-Optimisation
Il paraitrais que VbNullString soit beaucoup plus rapide que "" lors d'un test ou d'une affectation :)

BONNE PROG ...--Capoueidiablo--
0
cs_darkbol Messages postés 61 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 6 décembre 2004
16 juin 2004 à 10:29
"j'aime bien les nuages... :-|
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
16 juin 2004 à 10:43
Private Sub XminVal_Change(index As Integer)
Xmin = Val(XminVal(index).Text)
End Sub

De plus, Si ton contrôle fait partie d'un groupe, tu ne peux pas l'appeler sans en indiquer l'index.

S'il ne fait pas partie d'un groupe, alors le code dvient ceci :

Private Sub XminVal_Change()
Xmin = Val(XminVal.Text)
End Sub

Manu
0

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

Posez votre question
cs_darkbol Messages postés 61 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 6 décembre 2004
16 juin 2004 à 10:55
merci pour ta réponse

Sinon, non je n'ai pas copié collé de syntaxes de contrôles.

C'est juste que étant newbie, j'ai un peu trifouillé partout et résultat, j'ai un code un peu décousu (public / private) -au passage je n'ai pas compris ta toute dernière phrase-

Concernant le index as integer, il a été défini par défaut et d'après ce que j'ai compris d'un groupe de contrôles (newbie newbie), c parce que les textbox se situent dans une frame.

C pourtant des opérations simples, au debuggage
XminVal = nothing

Avec Xmin = Val(XminVal(index).Text) ; Xmin doit être dZclaré en tant qu'objet mais ca colle pas alors avec la fonction val?

Enfin, je voudrais juste stocker les valeurs numeriques entrées dans le textbox et vu que ca ne stocke rien mon controle reset n'a aucun effet non plus...

Darkbol

"j'aime bien les nuages... :-|
0
cs_darkbol Messages postés 61 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 6 décembre 2004
16 juin 2004 à 11:15
Merci à tous ca marche effectivement mieux avec de bonnes déclarations

Mais mon button reset ne marche toujours pas.. (por que?)

"j'aime bien les contrôles... :-|
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
16 juin 2004 à 11:30
Dépose ton nouveau code dans une autre question pour qu'on puisse voir ce qui ne va pas. Cette page-ci devient illisile dans mon navigateur ...
%-6

Manu
0
Rejoignez-nous