eastpeople
Messages postés105Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention11 novembre 2008
-
17 juin 2008 à 21:15
eastpeople
Messages postés105Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention11 novembre 2008
-
17 juin 2008 à 23:36
Bonjour à tous,
J'ai un petit problème sur une procédure voici mon code :
Private Sub case1_Click()
If MODIFICATION Then Exit Sub
If case1 = False Then
'si la case chekbox1 n'est pas cocher alors
prix1.Enabled = False
'la case prix1 n'est pas griser
Else
prix1.Enabled = True
'la case prix1 est griser (pas accessible)
prix1.Text = InputBox("Veuillez entrer le prix correspondant SVP", "PRIX")
'inputbox apparaît quand une case chekbox est coché
If prix1 = "" Then
'si la case est coché mais que le prix est vide alors
erreur = MsgBox("Vous avez coché la case, veuillez rentrer un prix", vbOKOnly + vbCritical, "OUPS")
'msgbox
prix1.Text = InputBox("Veuillez entrer le prix correspondant SVP", "PRIX")
bis = True
'inputbox
End If
End If
End Sub
En fait quand mon msgbox erreur est activé que l'on ne rentre rien et que l'on click sur OK cela nous envoi l'inputbox prix1.text, on click donc sur ok l'msgbox erreur revien mais là si on ne rerentre toujours rien puis que l'on click sur ok là l'inputbox prix1.text n'apparait plus.
Je pensais à une boucle while. Mais je voudrais votre avis.
Merci à tous.
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 17 juin 2008 à 23:20
...
Y a t-il un moyen sans changer l'input? je ne te reexplique pas le probleme pour ça vas voir plus haut mais la reponse est Oui, avec les API windows mais cela vas ce compliquer.
Private Sub case1_Click()
Dim Reponse As Variant
If MODIFICATION Then Exit Sub
If case1 = False Then
'si la case chekbox1 n'est pas cocher alors
prix1.Enabled = False
'la case prix1 n'est pas griser
Else
prix1.Enabled = True
'la case prix1 est griser (pas accessible)
Do while Reponse = ""
Reponse = Application.InputBox("Veuillez entrer le prix correspondant SVP", "PRIX")
'inputbox apparaît quand une case chekbox est coché
if Reponse = false then
Exit Do
Else
prix1.Text = Reponse
End if
'si la case est coché mais que le prix est vide alors
MsgBox "Vous avez coché la case, veuillez rentrer un prix", vbOKOnly + vbCritical, "OUPS"
'msgbox
Doevent 'pour te permetre d'erreter la boucle par la touche echap en cas de probleme
Loop
End If
End Sub
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 17 juin 2008 à 21:33
Salut
D'accord avec une boucle do loop. Cela devrait donner quelque chose comme ça :
Private Sub case1_Click()
If MODIFICATION Then Exit Sub
If case1 = False Then
'si la case chekbox1 n'est pas cocher alors
prix1.Enabled = False
'la case prix1 n'est pas griser
Else
prix1.Enabled = True
'la case prix1 est griser (pas accessible)
Do while prix1.Text = ""
prix1.Text = InputBox("Veuillez entrer le prix correspondant SVP", "PRIX")
'inputbox apparaît quand une case chekbox est coché
'si la case est coché mais que le prix est vide alors
MsgBox "Vous avez coché la case, veuillez rentrer un prix", vbOKOnly + vbCritical, "OUPS"
'msgbox
Doevent 'pour te permetre d'erreter la boucle par la touche echap en cas de probleme
Loop
End If
End Sub
eastpeople
Messages postés105Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention11 novembre 2008 17 juin 2008 à 21:46
Ok c'est cool merci, mais maintenant en fait quand je click sur annuler de l'msgbox j'aimerai qu'il sorte de l'msgbox et que la case ne soit plus coché. C'est possible de faire ça?
Merci
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 17 juin 2008 à 22:02
...
le meilleur moyen c'est de remplacer l'inputbox du VBA par l'inputbox d'excel et d'ajouter une condition Comme ceci :
Private Sub case1_Click()
If MODIFICATION Then Exit Sub
If case1 = False Then
'si la case chekbox1 n'est pas cocher alors
prix1.Enabled = False
'la case prix1 n'est pas griser
Else
prix1.Enabled = True
'la case prix1 est griser (pas accessible)
Do while prix1.Text = ""
prix1.Text = Application.InputBox("Veuillez entrer le prix correspondant SVP", "PRIX")
'inputbox apparaît quand une case chekbox est coché
if prix1.Text = false then 'vu que tu utilises la proprieté text il te faudra peut etre ecrire le false comme ceci "False"
prix1.Text = ""
Exit Do
End if
'si la case est coché mais que le prix est vide alors
MsgBox "Vous avez coché la case, veuillez rentrer un prix", vbOKOnly + vbCritical, "OUPS"
'msgbox
Doevent 'pour te permetre d'erreter la boucle par la touche echap en cas de probleme
Loop
End If
End Sub
Pourquoi celle-ci plutot que l'autre et bien l'inputbox d'excel comme tu peux le voir renvois false si tu utilises le bonton cancel ou la croix. Alors que l'inputbox du VBA renvois toujours une valeur vide, que le champs soit vide, que tu ais utilisé le bouton cancel ou que tu ais utilisé la croix. Donc pas facile avec cette derniere de savoir dans quel cas tu te trouves.
Pour plus d'info sur l'inputBox d'excel, apres avoir ecrit Application.InputBox positionne le curseur sur InputBox et appui sur la touche F1
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?