begin process at 2008 05 16 08:54:20
1 173 235 membres
76 nouveaux aujourd'hui
13 970 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DETECTER CANCEL SUR L'INPUTBOX


Information sur la source

Catégorie :Control Classé sous : cancel, inputbox, input, annuler Niveau : Débutant Date de création : 10/05/2005 Date de mise à jour : 12/05/2005 08:25:19 Vu : 7 802

Note :
9,18 / 10 - par 11 personnes
9,18 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (30)
Ajouter un commentaire et/ou une note

Description

Je n'ai peut-être pas suffisamment cherché, mais je n'ai pas vu de code expliquant comment on détectait l'appui sur Cancel dans une InputBox.
Car si on appuie sur OK avec une chaine vide, ou si on appuie sur Cancel, le retour de l'InputBox est le même : une chaine vide.

Seule la fonction StrPtr(), qui renvoie un pointeur sur chaine permet de savoir ce qui a réellement été renvoyé.
Pour une chaine vide, StrPtr(chaine)<>0
alors que si on appuie sur Cancel, on renvoie un pointeur nul.

Source

  • Dim sTemp As String
  • sTemp = InputBox("Appuyer sur OK ou Cancel, mais sans taper de texte dans l'InputBox.")
  • If StrPtr(sTemp) = 0 Then
  • MsgBox "Vous avez appuyé sur Cancel."
  • End If
  • ' MsgBox sTemp ' aurait renvoyé une chaine vide quel
  • ' que soit le bouton appuyé si on n'a rien entré dans l'InputBox.

    Dim sTemp As String

    sTemp = InputBox("Appuyer sur OK ou Cancel, mais sans taper de texte dans l'InputBox.")

    If StrPtr(sTemp) = 0 Then
       MsgBox "Vous avez appuyé sur Cancel."
    End If
    
    ' MsgBox sTemp ' aurait renvoyé une chaine vide quel
    ' que soit le bouton appuyé si on n'a rien entré dans l'InputBox.
12 mai 2005 08:25:19 :
  • signaler à un administrateur
    Commentaire de yoman64 le 10/05/2005 17:36:36

    Plutot bien ... je vais me coucher moin niaiseux ce soir :P

  • signaler à un administrateur
    Commentaire de MasterHack le 10/05/2005 19:24:50

    nice,vraiment ;)

  • signaler à un administrateur
    Commentaire de Pingouin le 10/05/2005 22:00:18

    Ouep bien vu ! Je n'aurais jms pensé a ca comme quoi il y en a toujours plus dans 430 015 têtes de membres CodeS SourceS que dans une ;-)

    @+

    Pingouin

  • signaler à un administrateur
    Commentaire de jrbleboss le 11/05/2005 20:38:14

    Oui c'est simple mais pas con.

  • signaler à un administrateur
    Commentaire de the mentor le 13/05/2005 04:43:11

    Nice :D
    10/10 bien penser

  • signaler à un administrateur
    Commentaire de Monitech le 15/05/2005 22:58:15

    bravo , bien penser

  • signaler à un administrateur
    Commentaire de kronemburg le 10/08/2005 13:06:35

    Génial

  • signaler à un administrateur
    Commentaire de us_30 le 21/08/2005 00:43:41

    Impeccable ! 10/10 ! Vraiment bien penser.

    Us.

  • signaler à un administrateur
    Commentaire de violent_ken le 30/10/2006 12:46:44

    Yop, je prend ;)
    @+

  • signaler à un administrateur
    Commentaire de mathben le 09/12/2006 20:03:10

    Ouais, j'essaie d'appliquer ton code.
    C'est quoi StrPtr ?
    aussi, si la personne écrit 0 dans la barre d'écriture, il va avoir un erreur?
    moi je veux que le monde rentre des notes d'examens, si ils font un erreur, je veux leur avertir et si ils font cancel car ils doivent recommencer, je dois le savoir!
    merci

  • signaler à un administrateur
    Commentaire de mathben le 09/12/2006 20:07:01

    Désolé, je n'avais pas vue la définition de StrPtr!
    donc, si la personne marque rien dans la barre, je veux être capable de lui dire qu'il a rien écrit et qu'il doit recommencer.
    Si la personne fait cancel, je dois être capable de le déterminer.

    Seule la fonction StrPtr(), qui renvoie un pointeur sur chaine permet de savoir ce qui a réellement été renvoyé.
    Pour une chaine vide, StrPtr(chaine)<>0
    alors que si on appuie sur Cancel, on renvoie un pointeur nul.

    Si la personne marque rien, le pointeur va être nul?
    Pareille que si il appuie sur cancel?

    Est-ce que j'ai raison?  Merci

  • signaler à un administrateur
    Commentaire de econs le 10/12/2006 18:27:27 administrateur CS

    Non, voici les cas d'usages :

    If sTemp = "" And StrPtr(sTemp) <> 0 Then
    ' L'utilisateur n'a rien entré.
    Else
    If sTemp = "" And StrPtr(sTemp) = 0 Then
      ' L'utilisateur a cliqué sur Annuler
    Else
      ' L'utilisateur a entré quelque chose.
    End If
    End If

    Tout est pourtant écris dans la description.

  • signaler à un administrateur
    Commentaire de mathben le 10/12/2006 18:30:07

    QUand j'utilise la fonction StrPtr(), vb.net ne veut pas le détecter?
    il dit que je n'ai pas déclarer ma variable.

  • signaler à un administrateur
    Commentaire de us_30 le 10/12/2006 22:06:05

    Salut,

    D'autre pourront confirmer mes propos, je pense, mais en VB.NET et autre version, il convient de vérifier si StrPtr() est une fonction encore présente... Sur certaines versions récentes en VB, cette fonction a été supprimée... ce qui explique le message d'erreur de Mathben...

    Amicalement,
    Us.

  • signaler à un administrateur
    Commentaire de econs le 11/12/2006 09:52:15 administrateur CS

    Y'a toutes les chances que StrPtr n'existe plus en VB.NET.
    Elle doit être remplacée par autre chose.

  • signaler à un administrateur
    Commentaire de okonkole le 23/05/2007 10:12:52

    Depuis le temps que je me demandais comment faire...
    Merci

  • signaler à un administrateur
    Commentaire de mitsh666 le 27/07/2007 09:22:34

    Hello,

    top ton code. Cela dis, j'ai du le modifié un peu pour l'utilisé sur vbscript. Voici ce que ça done :

    Dim stemp

    sTemp = inputbox("tapez votre nom","Identité")
    If isEmpty(sTemp) Then
        MsgBox "Vous avez appuyé sur Cancel."
    else
        MsgBox "Vous avez appuyé sur Ok"
    End If


    A+ et merci encore pour avoir poster ton génie ;-)

  • signaler à un administrateur
    Commentaire de econs le 27/07/2007 09:32:09 administrateur CS

    Effectivement, tu n'auras pas StrPtr en VBS, mais en VB6.
    Drôlement pratique le isEmpty, un peu comme le isset de PHP

  • signaler à un administrateur
    Commentaire de us_30 le 28/07/2007 13:32:28

    Un 10/10 aussi pour Mitsh666 !  -;):

    Une p'tite suggestion... Ces petites astuces auraient-elles pas une place sur codyx ?

    Amicalement,
    Us.

  • signaler à un administrateur
    Commentaire de Exploreur le 18/01/2008 20:42:10

    Salut,

    On peut aussi utliser : LenB

    Mais je pense que j'arrive aprés la guerre..lol...

    A+
    Exploreur

  • signaler à un administrateur
    Commentaire de mitsh666 le 21/01/2008 09:46:43

    Salut Us_30,

    merci pour le 10/10, mais ce n'est que de l'adaptation ;) Le but est d'avoir un peut tout ensemble.

    Pour codyx, c'est quoi? :|

    A+

    Mitsh

  • signaler à un administrateur
    Commentaire de yoman64 le 21/01/2008 12:10:28

    C'est un lieu pour les snippets (bout de code) de tout les langages :)

    http://codyx.org/

  • signaler à un administrateur
    Commentaire de us_30 le 21/01/2008 21:38:29

    Bonsoir à tous,

    Yoman64 a parfaitement répondu. Une autre lien se trouve tout en haut de cette page à droite, en gris clair "Snippets"... Moi, je verrai bien ces astuces sur Codyx, mais je laisserai Econs en décider... Une adaptation ? oui, mais bien pensé aussi...

    Quant à LenB, je crois Explorer qu'on ne puisse pas faire exactement la même chose...

    Amicalement,
    Us.

  • signaler à un administrateur
    Commentaire de Petiote le 04/04/2008 14:22:18

    kikoo all,

    Pour ma part je suis en vb.net sous VS 2005 et aucune de vos méthodes n'a fonctionnée alors j'ai bidouillée moi aussi

    If (ajoutenqteannee.Length) = 0 Then
         MsgBox "Vous avez appuyé sur Cancel."
    End If

    Voilou ;)

  • signaler à un administrateur
    Commentaire de Petiote le 04/04/2008 14:24:31

    Re,
    Oups, à la place de mon "ajoutenqteannee" il faut bien sûr mettre "sTemp".
    @pluche

  • signaler à un administrateur
    Commentaire de econs le 04/04/2008 15:34:18 administrateur CS

    Et si tu ne tapes aucune valeur, et que tu cliques sur le bouton OK ?

  • signaler à un administrateur
    Commentaire de Petiote le 04/04/2008 15:37:11

    Salut,

    ça affiche la messagebox que tu annules ou valides un champs vide.

  • signaler à un administrateur
    Commentaire de us_30 le 05/04/2008 10:32:01

    Bonjour,

    Visiblement, Petiote, tu n'as pas compris la subtilité du code... Après, vérification avec VB2005, "sTemp.length" a exactement le comportement de "Len(sTemp)". Donc, ce que tu proposes fonctionne si du texte est présent, mais si le champ est vide, comme demande Econs, ton code ne peut pas détecter le OK...

    Amicalement,
    Us.

  • signaler à un administrateur
    Commentaire de econs le 05/04/2008 12:56:57 administrateur CS

    petiote> Tu ne détectes donc pas l'appui sur Cancel ;op

  • signaler à un administrateur
    Commentaire de Petiote le 07/04/2008 09:39:21

    Vi c'est vrai, je n'avais pas vraiment compris le but du code (sauf après avoir relu 2 fois).
    Mais j'ai quels moyens pour détecter s'il sagit d'un "Cancel" ou d'un "ok" en vb2005?
    Merci.

Ajouter un commentaire

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS