cs_Dante27
Messages postés19Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention29 février 2008
-
27 févr. 2008 à 12:56
cs_Dante27
Messages postés19Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention29 février 2008
-
29 févr. 2008 à 08:55
Bonjour à tous,
je vous explique mon problème. J'ai une form avec plusieurs textboxs (une vingtaine environ) dont certains sont en Visible = false puisqu'ils n'apparaitront que dans certaines conditions. Ce que je cherche à faire quand je clique sur le bouton qui me valide tout ça, c'est vérifier que tous les textboxs sont bien remplis.
J'ai trouvé une fonction sur le net qui soit disant fait ça :
Dim txt As Control
Dim ctrl_txtbox As Boolean
For Each txt In Me.Controls
If TypeOf txt Is TextBox Then 'si c'est une TextBox
If txt.Text = "" Then
ctrl_txtbox = False
Else
ctrl_txtbox = True
End If
End If
Next
J'ai essayé de l'adapter à ma sauve pour obtenir le résultat escompté mais cette fonction ne fait le traitement que pour la dernière txtbox de mon form.
Est ce quelqu'un pourrait éventuellement me venir en aide?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 27 févr. 2008 à 13:31
salut,
d'après ton code c'est une variable qui reprend le résultat...
mais la variable est écrasée à chaque passage, il faut bien quitter un moment...
et autant en faire une fonction et de toute façon ne vérifier que les zones visibles (comment l'utilisateur pourrait remplir les autres? ^^)
Private Function ValidTB() As Boolean
ValidTB = True 'init
retour
Dim oCtrl As Control
For Each oCtrl In Me.Controls 'tous les
contrôles
If TypeOf oCtrl Is TextBox Then 'contrôle est une TextBox
If oCtrl.Visible Then 'contrôle est
visible
If LenB(oCtrl.Text) = 0 Then
ValidTB = False
Exit For 'vide, on
retourne faux et on quitte
End If
End If
End If
Next oCtrl
Set oCtrl = Nothing
End Function
tu n'as plus qu'à agir selon le retour de la fonction
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
cs_Dante27
Messages postés19Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention29 février 2008 27 févr. 2008 à 13:58
Merci beaucoup ca fonctionne parfaitement. En plus cette fonction risque de me resservir assez souvent.
Par contre, tant que j'y suis, j'ai expliqué que je voulais contrôler mes textbox vide visible (ce qui est fait) mais ce que je n'ai pas dis, c'est que mes textbox se trouvent sur un SSTab avec 3 onglets; chacun contenant des textbox. Pour être plus simple chaque onglet est un formulaire, et il faut que je fasse le contrôle seulement pour les textbox d'un onglet.
Auriez vous une réponse à mon probleme?
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 27 févr. 2008 à 14:23
fais un groupe de textbox par onglet
comme ça tu auras dans l'onglet 1 le textbox1(0) , textbox1(n ),
dans l'onglet 2 le textbox2(0) , textbox2(n )
etc
cs_Dante27
Messages postés19Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention29 février 2008 27 févr. 2008 à 15:46
Le container prend en compte mes trois onglets, j'avais déjà pensé à l'utiliser. Je pense que la seule solution est celle de pile_poil : un groupe de textbox par onglet.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 27 févr. 2008 à 16:03
oCtrl.Container.Tab te retourne l'index de l'onglet actif. à toi de le tester dans la boucle
cependant je suis POUR le groupe de contrôles, c'est juste pour dire que c'est faisable...
ps : "réponse acceptée" sert à valider la ou les réponses qui solutionnent ton problème, tu n'as pas besoin de tout accepter, surtout si tu attends une correction ;)
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
cs_Dante27
Messages postés19Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention29 février 2008 27 févr. 2008 à 17:38
Bon je vois bien cette propriété Tab et j'ai bien compris que sa valeur changait en fonction de mon onglet. Le problème est que j'ai retourner ça dans divers sens et que je n'arrive pas à un résultat concluant.
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 27 févr. 2008 à 18:50
Salut,
si je ne me trompe pas la proprieté
oCtrl.Container.Tab doit te retourner un long.
La valeur retournée est de 0 a n, autrement dit si tu as 3 onglets oCtrl.Container.Tab te retournera
0 pour le premier
1 pour le second
2 pour le troisieme
etc
cs_Dante27
Messages postés19Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention29 février 2008 28 févr. 2008 à 13:01
Rebonjour tout le monde,
Tout d'abord merci aux gens qui m'ont filer un coup de main. Avant que vous me preniez pour une nouille :-), je tiens à dire que j'ai essayé d'utiliser cette méthode Tab ; donc je ne sais pas si je l'utilise mal ou si je n'ai pas la logique mais je n'arrive pas à obtenir le résultat escompté.
Je sollicite donc une dernière fois votre aide ( sur ce problème).
cs_Dante27
Messages postés19Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention29 février 2008 28 févr. 2008 à 16:15
J'avais testé cette façon de faire en mettant l'index du Tab en dur et ca ne marchait pas. Et là ta fonction me retourne "Vrai" tout le temps, même quand les champs sont vides. J'ai fais du debug et apparement l'exécution ne dépasse pas le If oCtrl.Container.Name... donc forcément elle renvoit "Vrai" quoi qu'il arrive.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 28 févr. 2008 à 16:30
alors il y a qqc que tu ne nous dis pas....
peut-être que les textbox sont "sur" le sstab et non "dans" le sstab?
peut-être n'as-tu pas changé le nom du sstab? = "NOM_DU_SSTAB_A_MODIFIER"
ou les txtbox sont en plus dans une pisturebox, frame ou tout autre container?
ou tu as mis en public et il manque la référence à la form parente?
etc...
j'avais testé "name" et"tab" hier, çà fonctionnne...
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
cs_Dante27
Messages postés19Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention29 février 2008 28 févr. 2008 à 16:46
Non j'ai bien indiquer le nom de mon SSTab, je ne suis pas si bête .
Pour être sûr que nous avons les mêmes éléments pour essayer de résoudre mon problème, je vais décrire ma form.
Donc c'est une form contenant un SSTab possèdant 3 onglets.Sur le premier onglet, j'ai une quinzaine de textbox réparties dans 4 ou 5 frame puisqu'ils font référence à différents types d'informations. Après les autres onglets sont basés sur le même modèle.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 28 févr. 2008 à 17:15
... c'est bien ce que je disais, le container n'est pas le sstab mais la frame
ou les txtbox sont en plus dans une picturebox, frame ou tout autre container?