Probleme group textbox [Résolu]

ElectriZ 9 Messages postés jeudi 11 novembre 2004Date d'inscription 19 novembre 2004 Dernière intervention - 17 nov. 2004 à 03:46 - Dernière réponse : ElectriZ 9 Messages postés jeudi 11 novembre 2004Date d'inscription 19 novembre 2004 Dernière intervention
- 19 nov. 2004 à 01:38
Bonsoir a tous.

Donc je vais essayer d'etre clair.

Donc mon probleme est la depuis que j'ai decide de me "simplifier" la vie avec des groupes de textbox... Ba c'est l'inverse, mais parce que je ne maitrise par VB(6) me direz vous ...

Donc voila,
jai un text box dans laquelle je rentre un reference(Tref). Elle ne fait pas partie d'un groupe.

En dessous jai 25 textBox dans lesquelles je doit rentrer la reference a verifier, et donc a comparer avec "Tref". Elles forment le groupe "Tverif" (Tverif(0)...)

Juste a cote 25 autres textbox de N° de serie. elles forment le groupe "Tserial" (Tserial(0)...)

Et enfin 25 labels qui me disent si Tverif(n).text = Tref.text (eux aussi groupes... Lresu)

Je me suis dit quand mettant tout sa en groupe sa me simplifirais la vie grace a des appel de procedure public (dans la "premiere" version de l'appli, y'avait plus de 50 ligne par command change de textbox...)

Seulement voila... je suis loin d'etre balaize a VB ... jai commencer ya 4-5 jours maintenant et je le sens bien que je suis limité...

donc en faite je voudrais plusieurs choses :

1. Une procedure (appellé dans le _change du groupe Tref) qui me permet de faire un tab auto quand jai attend 14 characteres (je sais le faire mais en faisant une formule par textbox).

2.que avec une procedure (appelle dans _lostfocus du groupe Tref) me permet de d'ecrire dans le "Lresu(n)" correspond OK ou Erreur si Tverif(n).text = Tref.text

3. et une derniere procedure, qui lors du _lostfocus des Tserial(n), me dise si ce N° de serie a deja ete entree (avant ou apres) dans un autres textbox du groupe Tserial.

J'arrive a faire tout sa, mais sans les groupes.... du coup mon appli est mega grosse, et pas tres facile a relire. Je croix que mon probleme cest les calcul de pour attribuer une valeur a n ("Tref(n)")
Jai trouver des trucs du genre :
For i = 0 To Tref.Count - 1
Mais soit je suis encore plus nul que prevut, soit sa n'a d'utilite que pour ma fonction raz des tout mes champs (sa sa marche ;) )

J'espere avoir ete claire, y commence a etre tard...
Merci de prendre le temps de me reponce, je vous en serez grandement reconnaissants.

ElectriZ
Afficher la suite 

7 réponses

jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 17 nov. 2004 à 10:41
+3
Utile
Salut,

bon alors essayons de repondre point par point:

je crois que tu t es trompe a un endroit car tu dis :
"je rentre un reference(Tref). Elle ne fait pas partie d'un groupe"

et quelque lignes plus loin tu dis:
"Une procedure (appellé dans le _change du groupe Tref)"

J ai supposer que tu a voulu dire du groupe Tverif
Essaie tout ca

1-
Private Sub Tverif_Change(Index As Integer)
If Len(Tverif(Index)) = 14 And Index < (Tverif.Count - 1) Then Tverif(Index + 1).SetFocus
End Sub


ca te fait un tab auto du premier au dernier (attention tu dois le modifier can c est le dernier car sinon il se rempli de plus de 14 caratere)

2-
Private Sub TVerif_LostFocus(Index As Integer)
If TVerif(Index).Text = TRef.Text Then
    Lresu(Index).Caption = "OK"
Else
    Lresu(Index).Caption = "ERREUR"
End If
End Sub


3 -
For i = 0 To Tserial.Count - 1
    If i <> Index Then
        If Tserial(i).Text = Tserial(Index).Text Then
            Call MsgBox("REFERENCE DEJA ENTREE")
            Exit For
        End If
    End If
Next


Voila, j suis desole de pas donner beaucoup d explication (taf oblige) mais si tu en veux refait signe ;)
@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
Cette réponse vous a-t-elle aidé ?  
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 18 nov. 2004 à 09:21
+3
Utile
SAlut,

Non helas on peut pas editer de message ..

a ce que je vois, il y a un truc qui me tracasse dans tes conditions
alors essaie en sortant
If Len(Tserial(Index)) = 10 Then
         Tverif(Index + 1).SetFocus
 End If


de la boucle for (en plus si tu regardes bien il passe a la ligne setfocus que si i = index...)

Regarde deja ces petits truc pour voir si ca regle pas le probleme
@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
Cette réponse vous a-t-elle aidé ?  
ElectriZ 9 Messages postés jeudi 11 novembre 2004Date d'inscription 19 novembre 2004 Dernière intervention - 17 nov. 2004 à 14:41
0
Utile
Merci bcp jrivet cest genial...

Je vais peut etre abuser...
mais en fait, pour ma question 3 (verifier si le N° de serie a deja ete rentre), je voudrais ameliorer un peu...

donc sque je voudrais cest quil me fasse, Dans Tserial_change(Index as Integer) :
Si le nombre de caractere de Tserial(n) attend 10 alors fais la verification pour voire si le N° de serie a deja ete entré.
Si le N° a deja été entre alors msg d'insulte (+ effacement du Tserial(n) en question et garde le focus), sinon donne les focus au prochain Tverif(n)

Jai donc fait sa :

Private Sub T_netic_Change(Index As Integer)
If Len(Tserial(Index)) = 10 And Index < (Tserial.Count - 1) Then
For i = 0 To Tserial.Count - 1
If i <> Index Then
If Tserial(Index).Text = Tserial(i).Text Then
MsgBox ("N° de serie déja saisie."), 16, ("Erreur")
Tserial(Index).Text = ""
Else
Tverif(Index + 1).SetFocus
End If
End If
Next
End If
end sub


Mais avec sa, il considere, apres effacement, que Tserial(Index) est egal a tout les Tserial(n) ou l'on a pas encore entré de valeur (il a raison dans l'absolue). Donc il m'envoye le message 23 fois :-/

Sa viens surement du faite que jai mis sa dans _change. Mais si je met le if then de comparaison dans le lostfocus ba je suis obliger de redonner le focus au Tserial en question et sa refait la meme chose ...

Voila, je sais, je suis lourd ;)
Merci de votre aide :D
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 17 nov. 2004 à 15:23
0
Utile
Re,
Si c est quand le text vaut "" qu il te renvoie le message plein de fois et bien ajoute a cette condition
If Tserial(Index).Text Tserial(i).Text
ceci
AND len(Tserial(index))= 10


NOTE; peu etre peu tu incorporer aussi le EXIT FOR pour sortir de la boucle for.
@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
ElectriZ 9 Messages postés jeudi 11 novembre 2004Date d'inscription 19 novembre 2004 Dernière intervention - 18 nov. 2004 à 08:45
0
Utile
Alors j'ai modifier :

Private Sub Tserial_Change(Index As Integer)
For i = 0 To Tserial.Count - 1
If i <> Index ThenIf Tserial(Index).Text Tserial(i).Text And Len(Tserial(Index)) 10 Then
MsgBox ("N° Etiquette déja saisie."), 16, ("Erreur")
T_serial(Index).Text = ""
End If
Else
If Len(Tserial(Index)) = 10 Then
Tverif(Index + 1).SetFocus
End If
End If
Exit For
Next


Donc la il me fait plus le coup de 23 msg, mais il ne me fait le setfucos que a la premiere "ligne" (Tserial(0)), apres bi il block (ya un maxlenght = 10)
javoue ne pas conprendre ...
En tout cas merci Julien de m'aider, cest gentil, et tes conseil marche bien ;)
@+
ElectriZ 9 Messages postés jeudi 11 novembre 2004Date d'inscription 19 novembre 2004 Dernière intervention - 18 nov. 2004 à 08:55
0
Utile
Voui pour l'effacement le nom de la Textbox est pas bon .... Cest bien Tserial et pas T_serial :D

On peut pas editer un msg ?
ElectriZ 9 Messages postés jeudi 11 novembre 2004Date d'inscription 19 novembre 2004 Dernière intervention - 19 nov. 2004 à 01:38
0
Utile
exacte, cest bien apres le next qu'il fallait mettre ce if then....
merci bcp Julien ;)

Ton aide ma ete tres precieuse pour ce fonctions :)

Je repasserai surement dans quelques heures pour pleurer pour autre chose que je comprend plus depuis les groupes...

Par contre, ca a beau etre chiant a gerer (les groupes, enfin je trouve) sa raccourci vraiment enormement les pages de code !

encore merci Julien et a bientot je suis sur ;)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.