Detecter cancel sur l'inputbox

Soyez le premier à donner votre avis sur cette source.

Snippet vu 24 418 fois - Téléchargée 33 fois

Contenu du snippet

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 / Exemple :


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.

A voir également

Ajouter un commentaire

Commentaires

sehfat
Messages postés
3
Date d'inscription
dimanche 9 novembre 2003
Statut
Membre
Dernière intervention
7 mars 2013

ca marche bien
merci
cs_hippo92210b
Messages postés
59
Date d'inscription
lundi 12 février 2007
Statut
Membre
Dernière intervention
9 décembre 2009

Génial! C'est vraie que c'érait plutôt nul cet faille mais elle est comblé !

10/10
cs_Petiote
Messages postés
14
Date d'inscription
mercredi 7 novembre 2007
Statut
Membre
Dernière intervention
8 février 2010

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.
econs
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
19
petiote> Tu ne détectes donc pas l'appui sur Cancel ;op
us_30
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
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.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.