ImputBox, msgBox

Résolu
cs_mathben Messages postés 30 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 10 décembre 2006 - 9 déc. 2006 à 20:26
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 10 déc. 2006 à 21:30
Bonjour, j'ai cherché comment déterminer que l'utilisateur a appuyé sur telle touche.
Savez-vous comment déterminer si il a appuyé sur ok, ou un autre bouton!

Deuxième question, comment je pourrais modifier les boutons?  Changer l'écriture dedans, est-ce que c'est faisable?

merci!
A voir également:

19 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 déc. 2006 à 20:36
Salut,

pour ton 1 :

Sub Exemple_InputBox()
    Dim Sboub As String
    
    Sboub =  InputBox("Test")
    
    If Sboub = vbNullString Then
        MsgBox "Vous n'avez rien rentré ou cliquez sur annuler", vbCritical
    Else
        MsgBox "Donnée prise en compte", vbInformation
    End If
End Sub

Sub Exemple_MsgBox()
    Dim Sboub As VbMsgBoxResult
    
    Sboub = MsgBox("Voulez vous recommencer
?", vbOKCancel)
    
    If Sboub = vbCancel Then
        MsgBox "Vous avez cliquez sur annuler", vbCritical
    ElseIf Sboub = vbOK Then
        MsgBox "Vous avez cliquez sur OK", vbInformation
    End If
End Sub


~ <small> [code.aspx?ID=39466 Mortalino] </small>
~

Pour ton 2:
il faut que tu fasses ta propre Form (ou UserForm, en VBA) contenant tes boutons, labels et textbox.

@++

<hr size ="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 déc. 2006 à 21:06
En français (et en gros..), ce sont les constantes résultant du MsgBox.
(vbOK, vbCancel, vbYes, vbNo, etc)
Appuie sur F2 quand tu es dans VB, et tape vbMsgBoxResult dans Rechercher.

Ca doit apparaitre dans la liste, d'autant plus que cette constante ne peut fonctionner sans la fonction MsgBox (et elle se trouve dans la bibliothèque VBA)

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
3
cs_mathben Messages postés 30 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 10 décembre 2006
9 déc. 2006 à 20:58
salut, j'ai un problème
Dim Sboub As VbMsgBoxResult
c'est quoi vbMsgBoxResult, ça ne veut pas fonctionner
merci

c'est moi, mathben!
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
9 déc. 2006 à 21:03
"The VbMsgBoxResult enumeration contains constants used to identify which button was pressed on a message box displayed using the MsgBox function. These constants can be used anywhere in your code."
0

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

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
9 déc. 2006 à 21:12
Tu pourrais aussi y aller avec
Dim sboub as Integer
vbCancel, vbOK, vbYes, vbNo,... sont des entiers (Integer)

MPi
0
cs_mathben Messages postés 30 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 10 décembre 2006
9 déc. 2006 à 21:14
Ok, mais soit que j'ai mal formulé ma première question ou autre chose...

 If Sboub = vbNullString Then
        MsgBox "Vous n'avez rien rentré ou cliquez sur annuler", vbCritical
    Else
        MsgBox "Donnée prise en compte", vbInformation
    End If

ici,il regarde si il a rien marqué?
Je voudrais savoir si il appuie sur annuler, je dois le faire sortir de la boucle, car lorsqu'il fait cancel, il passe a la deuxième notes.
je vous montre mon code ^^
<hr size="2" width="100%" />
Dim siErreur As Boolean = False
        texteErreurNbÉtudiant.Text = ""
        If Not IsNumeric(texteNbÉtudiants.Text) Or texteNbÉtudiants.Text.IndexOf(",") > -1 Then
            texteErreurNbÉtudiant.Text = ("Vous avez fait une erreur." & vbCrLf & _
            "Vous devez mettre un nombre entier positif.")
            siErreur = True
        ElseIf IsNumeric(texteNbÉtudiants.Text) Then
            If CDbl(texteNbÉtudiants.Text) < 0 Then
                texteErreurNbÉtudiant.Text = ("Vous avez fait une erreur." & vbCrLf & _
                            "Vous devez mettre un nombre entier positif.")
                siErreur = True
            End If
        End If
        If siErreur = False Then        'on rentre les notes
            ReDim note(CInt(CDbl(texteNbÉtudiants.Text) - 1))
            texteNbÉtudiantsCopy.Text = CStr(note.Length) 'copy du nombre d'élève dans la sections nombres d'élèves
            For k As Integer = 0 To note.Length - 1
                Static boutonImputBox As String
                Dim boutonImputBoxVérifie As ms
                boutonImputBox = InputBox("La note de l'étudiant " & k + 1 & " est : ")
                If Not IsNumeric(boutonImputBox) Then
                    MsgBox("Vous avez fait une erreur." & vbCrLf & "Entrer un nombre.", MsgBoxStyle.OkOnly)
                    k = k - 1
                ElseIf CDbl(boutonImputBox) < 0 Or CDbl(boutonImputBox) > 120 Then
                    MsgBox("Vous avez peut-être fait une erreur." & vbCrLf & "Vous avez marqué " & note(k) & " .")
                ElseIf boutonImputBox = vbNullString Then
                    msgBox(
                End If
            Next
        End If
<hr size="2" width="100%" />

il n'est pas terminé, il a encore des modifications (je suis bloqué un peu)
merci
<hr size="2" width="100%" />c'est moi, mathben!
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 déc. 2006 à 21:19
Si il fait Cancel ou s'il ne rentre rien, c'est la même opération.
Dans tout les cas t'as pas tes données donc tu peux sortir de la boucle.

If Sboub =  vbNullString Then
        MsgBox "Vous n'avez rien rentré ou
cliquez sur annuler", vbCritical
    Else
        MsgBox "Donnée prise en compte", vbInformation
    End If
@++

<hr size ="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
9 déc. 2006 à 21:29
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 déc. 2006 à 21:35
jmfmarques, j'ai vu ton lien, attention, aucun moyen de dissocier l'appuie sur cancel ou sur OK avec rien de renseigné.
Cancel retourne une chaine de caractère de type vbNullString, donc aucun espace.

N'hésite pas :         MsgBox "-" & InputBox("Test") & "-"
Le résultat sera -- et non - -.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
9 déc. 2006 à 21:48
Tiens !

Pas chez moi...
as-tu essayé ?

Private Sub Command1_Click()
  reponse = InputBox("tapez quelque chose", "essai de controle de cancel", " ")
  If reponse = "" Then
    MsgBox "vous avez appuyé cancel"
  ElseIf reponse = " " Then
    MsgBox "vous avez appuyé sur OK sans renseigner"
    reponse = ""
  Else
    MsgBox "vous avez frappé " & reponse
  End If
End Sub


La solution d'Econs est encore plus fine et marche également...
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
9 déc. 2006 à 21:50
As-tu bien remarqué l'espace de départ ?

Ici :

reponse = InputBox("tapez quelque chose", "essai de controle de cancel", " ")
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 déc. 2006 à 21:53
Bien vu, subtil et on peut dissocier, du coup.
Attention tout de même, il faudra faire, du coup, un LTrim$ en cas de réponse :

Private Sub Command1_Click()
  reponse = InputBox("tapez quelque chose", "essai de controle de cancel", " ")
  If reponse = "" Then
    MsgBox "vous avez appuyé cancel"
  ElseIf reponse = " " Then
    MsgBox "vous avez appuyé sur OK sans renseigner"
    reponse = ""
  Else
    MsgBox "vous avez frappé " & LTrim$( reponse)
  End If
End Sub

En tout cas, merci, je n'avais pas pensé à cela

Allez, bonne nuit à tous 

@++

<hr size ="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cs_mathben Messages postés 30 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 10 décembre 2006
10 déc. 2006 à 08:19
Votre affaire est cool, sauf que j'ai toujours un problème.  La réponse, je dois vérifier que se soit un nombre, donc   not isNumeric(note)
Lorsqu'il a un espace, il dit que ce n'est pas un nombre (au début)
Ensuite, il a un deuxième problème, ce n'est pas jolie écrire et a chaque fois, il a un espace devant ton nombre, on voit qu'il a un espace, ce n'est pas jolie et ça peut être fatiguant.
Pour continuer, il peut y avoir un problème, ici on a caché le problème, mais ça peut créer un bug, si un utilisateur fait le con et il met un espace devant, peu importe la facon que j,arrange mon code ( que je ne mette pas de isNumeric()), il va avoir un problème dans mon code, il va sortir de la boucle que moi, je veux lui dire qu'il a fait une erreur.

Je me suis dit alors que se serait plus simple en créer un.
Comment je peux faire pour en créer un?  Je connais pas beaucoup vb (je suis habitué en flash, se serait tellement facile faire ce que je veux faire!).

Dite moi svp comment je peux créer un ImputBox manuellement et définir des variables à mes boutons, donc la je pourais déterminer sur quel bouton il a cliqué, et aussi, s'il fait une erreur, je ne serai pas obligé de faire appel a un msgBox qui apparait dans la face et qui peut stressé les vieux...(je crois...)
Donc, dès qu'il appuie sur ok, j'analyse se qu'il a écrit et je lui dit si il a bon, ou sinon je lui dit de recommencer.  S'il veut quitter, c'est simple, tu peux annuler.

merci!




<hr size="2" width="100%" />c'est moi, mathben!
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
10 déc. 2006 à 08:48
Pour créer une InputBox, il suffit de créer une Form, tu y places 2 boutons (OK, Annulé), un Label et un TextBox.
Recherche sur codyx "textbox numérique", tu aura le code pour ne traiter que les caractères numériques

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
10 déc. 2006 à 08:50
Un cadre (Frame) dans lequel tu places tout ce que tu veux (labels, boutons et une textbos pour la saisie)
Dans l'événement keypress de la textbox : tu gères directement les entrées avec isnumeric (nombreux exemples sur ce forum)

Il ne te reste plus qu'à jouer avec la propriété visible de ce cadre (True ou False selon que tu veux l'afficher ou non).
Attention : à chaque fois que tu l'affiches : remettre à "" ce qu'il y a dans la textbox.

Astuce : rien ne t'empêche de paramètrer les labels etc... de ce cadre pour t'en servir, au besoin, à plusieurs fins possibles et te débarrasser ainsi, une fois pour toutes, de tes inpuboxes.

Tout celà est on ne peut plus enfantin à mettre en oeuvre.
Amen.
0
cs_mathben Messages postés 30 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 10 décembre 2006
10 déc. 2006 à 18:11
Merci, je commence à déveloper mon nouveau Form et je me suis dit : "Comment je vais pouvoir l'appeller?  Lorsque je clic sur mon bouton "Entrer les notes", je veux faire apparaitre le form."
Ensuite, c'est quoi codyx, ou le trouver?
C'est quoi un cadre?

Merci!

<hr size="2" width="100%" />c'est moi, mathben!
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
10 déc. 2006 à 18:39
"Comment je vais pouvoir l'appeller?  Lorsque je clic sur mon bouton "Entrer les notes", je veux faire apparaitre le form."


Ta question, Mathben, est pour le moins très inquiétante....
As-tu au moins commencé (c'est le début du début) à apprendre VB ? (aide en ligne, tutos sur ce forum...)

Va voir dans l'aide en ligne ce que sont Show, Load, Hide, etc... (c'est un minimum !)
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
10 déc. 2006 à 21:28
Salut,

Codyx c'est la boite à snippets (snippet = morceau de code / fonction).
Ces fonctions sont soumises à Validation par les Admins, elles sont censées (à 80% des cas) être optimisée et performante.

Tu peux y accéder via ce lien : [www.codyx.org www.codyx.org]
Sur la page Sommaire , tu retrouves les 5 derniers snippets ajoutés.

@++

<hr size ="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
10 déc. 2006 à 21:30
Lien erroné ^^ :
http://www.codyx.org

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
Rejoignez-nous