fixou81
Messages postés200Date d'inscriptionlundi 9 mai 2005StatutMembreDernière intervention12 juin 2007
-
19 mars 2007 à 11:15
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 2014
-
19 mars 2007 à 17:36
bonjour c juste pour la synthaxe.
J'aimerai faire une boucle :
faire message box "il manque des données"
tant que textbox1 pas vide et textbox2 pas vide et optionbutton1ouOptionbutton2 cochés. Comment on fait pour ecrire la partie en gras?
sous vba word
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 19 mars 2007 à 11:30
Salut,
Le problème si tu fais une boucle, c'est que l'utilisateur n'aura peu être pas le temps de remplir les condition pour en sortir, et sera donc constament obliger d'acquitter la Msgbox /
Sinon la syntaxe est la suivante. (je trouve que tu aurais pu la trouver toit même mais bon)
While (Text1.Text <> "") And (Text2.Text <> "") And ((Option1.Value = True) Or (Option2.Value = True))
Call MsgBox("Il manque des données")
Wend, ----
[code.aspx?ID=41455 By Renfield]
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 19 mars 2007 à 11:31
Excuse, j'ai oublié les propriété des controles:
while(textbox1.value <>"" and textbox2.value <>"" and (optionbutton1.value -1 or optionbutton2.value -1)
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 19 mars 2007 à 11:35
Re,
Non non, pas besoin qu'un contrôle est le focus pour tester le contenu (heureusement pour nous d'ailleurs )
Mais reste le problème de la boucle et des messages incessant.
@+: Ju£i?n Pensez: Réponse acceptée
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 19 mars 2007 à 11:44
En tout ca, moi, j'ai voulu faire un formulaire ou je devais tester tous les champs avant de sauvegarder et je devais passer par des tests intermédiare car sinon, VB me disait,
Impossible de faire référence à une propriété si le controle n'est pas activé
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 19 mars 2007 à 12:04
Salut, Nicko11
Je jurerais presque que tu avais mis ton code dans un événement de chargement (load, par exemple), alors que rien n'assure qu'est déjà chargé le contrôle auquel il est fait référence...
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 19 mars 2007 à 12:17
La facon donc tu dis ca laisse a penser que je pense avoir forcement raison.
Pas du tout, mais c'est un question que je me pose (pourquoi cela fait ca?). Je voudrais pas poluer le forum de fixou81 (meme si ca fait perpete qu'on a repondu et que lui ne le fait pas), mais pour te repondre, non ce n'était pas dans un load mais lors d'un appel a une procedure dans un evenement change.
Alors peut etre que cela est normal mais en meme temps je ne verrai pas comment faire pour tester tous les champs avec .text si je peux pas faire ca dans cet evenement.
Pour finir, je viens d'essayé dans tout un tas d'evenement et ca ne marche toujours pas.
Alors, je suis curieux de savoir si c'est normal ou si je viens d'un monde parallele.
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 19 mars 2007 à 14:17
Je pensais que le cas était pourtant bien clair, mais s'il faut du code,ok allons y, (avec le commentaire de l'epoque)
imaginons 2 textboxs Correction et Analyse et Test un chaine de caracteres:
Private Sub Correction_Change()
'On utilise la propriété TEXT du champ pour avoir la derniere mise à jour de ce dernier
'Car avec la propriété VALUE, on n'obtient que la précédente valeur
'Le problème est que l'on ne peut pas tester tous les champs directement en une instruction
'Car le champ testé doit entre actif (en focus)
'Donc on passe par tout un tas de tests pour être sur que tous les champs ont bien été remplis
If (Correction.Text <> "") Then
Test_Correction = True
Else
Test_Correction = False
End If
Call Save_Condition
End Sub
Ex: si je mets en suite Test = analyse.text dans cette procedure, ca me met le message d'erreur sité précédemment
Donc je fais appelle à save_condition qui regroupe tous les tests des différents champs.
J'ai meme essayer dans la procedure save_condition, mais toujours pas.
Donc, dans mon cas, .text ne peut etre utiliser que dans lorsqu'il est en focus. Pour y remedier j'ai meme fais
analyse.setfocus
test = analyse.text, et la tout fonctionne
De plus, j'ai pu voir que ca le faisait sur VBA VB6, et que .value donnait l'ancienne valeur du champ en focus et que .text donnait la nouvelle. Je veux bien admettre que ca peut vous paraitre bizarre mais ca fait 2 ans que je code de temps en temps en VB et que ca m'a toujours fait ca.
PS :Drice tu as parfaitement compris avec ton deuxieme exemple sauf que je teste si la textbox est <> "" et je mets pas ca dans un evenement click d'un bouton. Je crois pas que ca joue mais apres tout, je comprend pas pourquoi ca fonctionnerait pas.
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 19 mars 2007 à 14:30
Même sans le focus ça marche, tout du moins si j'ai bien compris tu as des problèmes avec ce genre de chose! Normalement tout ça marche! Mais après si chez toi non, je vois pas d'où le problème peut venir.
Private Sub TextBox2_Change()
If TextBox1.Text <> "" Then
MsgBox TextBox1.Text
End If
Call Test
End Sub
Sub Test()
If TextBox1.Text <> "" Then
TextBox2.SetFocus
MsgBox TextBox1.Text
End If
End Sub
Drikce 06
Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 19 mars 2007 à 14:32
Dricke06, j'ai essayé de mettre la msgbox que tu as mis dans la l'evenement change et ca ne fonctionne pas. Si je mets la textbox concerne ok mais sinon, il ne dis toujours la meme chose, je repete: impossible de definir ou de faire référence a cette propriété si le controle n'est pas actif.
Alors c'est qu'il y a une autre probleme car si ca marche pour toi, ca doit etre de mon coté que ca bug. Or, je vois pas d'où cela peut provenir.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 19 mars 2007 à 14:34
Hé bé !
Je dois dire qu'ici rien n'est plus clair !
Veux-tu s'il te plait nous dire :
ce qu'est test_correction chez toi ? (on ne le voit pas et ce devrait être une variable booléenne que tu n'utilise pas dans le code que tu nous montres !...)
Test, nous dis-tu, est une variable de type string (c'est ce que je déduis de la lecture de ce que tu écris). et tu lui affecte apparemment la valeur du texte d'une textbox nommée analyse.
et nous ne voyons absolument pas, dans le code que tu nous "exposes", le lien entre toutes ces choses !!!
C'est dingue !
Que veux -tu enfin faire ? On le fera pour toi en 2 coups de cueillères à pot et celà vaudra mieux, apparemment (mais tâche au moins de définir le contexte de façon précise, hein...)
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 19 mars 2007 à 14:37
Donc exemple de code est parfait pour montrer mon probleme mais j'ai fais ca dans 2 entreprises ou j'ai travailler et sur VB6 et VBA et ca fonctionne pas. Donc la, je ne sais pas quoi dire.
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 19 mars 2007 à 14:41
De plus l'aide fournit par VBA, confirme ce que je disais tout à l'heure entre .Text et .Value, donc à part une version différente d'excel, où est le problème?
Text, propriété
Remarques
Pour un contrôle TextBox, la valeur que vous attribuez à la propriété Text s'applique également à la propriété Value .
Drikce 06
Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas: