Problème sur code vba

Résolu
eastpeople Messages postés 105 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 novembre 2008 - 17 juin 2008 à 21:15
eastpeople Messages postés 105 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 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.

7 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
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
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
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

A+
0
eastpeople Messages postés 105 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 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
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
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+
 
0

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

Posez votre question
eastpeople Messages postés 105 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 novembre 2008
17 juin 2008 à 22:56
Alors cela ne fonctionne pas, il ne sort pas de l'msgbox quand on click sur annuler.
Y a t-il un moyen sans changer l'input?
0
eastpeople Messages postés 105 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 novembre 2008
17 juin 2008 à 22:56
Il ne sort pa de l'input désolée, j'ai di l'msgbox
0
eastpeople Messages postés 105 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 novembre 2008
17 juin 2008 à 23:36
OK c'est bon merci,
bonne soirée à tous, je te remerci beaucoup bigfish_le vrai.
0
Rejoignez-nous