Inputbox et le cancel

Tomsower Messages postés 25 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 5 mai 2006 - 25 janv. 2004 à 17:21
Tomsower Messages postés 25 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 5 mai 2006 - 25 janv. 2004 à 22:36
Bonjour,
voila j'aimerais que la question soit repeter tant qu'il n'y a rien de saisis mais bien sur que le inputbox arrete de s'afficher si on appuit sur cancel.
Voila mon code :

nom = InputBox("Saisir le nom ")Do While nom_OU_ajouter "" or nom empty
If nom = empty
GoTo fin
ElseIf nom = "" Then
nom = InputBox("Saisir le nom ")
End If
Loop

Et dans cet exemple a tout les coup il rentre dans la condition : if nom = empty

J'ai esseyais avec des vbcancel = 2 mais si j'ai bien vu sur les forum c'est plutot pour les msgbox bref.
Merci d'avance )

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 janv. 2004 à 18:07
Salut tomsower
En effet, "empty" écrit comme ça ne doit pas être reconnu par vb (ou du moins comme une variable) --> vbEmpty (de mémoire)
(il manque le Then après "If nom = empty")

Astuce : En t^te de chaque feuille ou module, ajoute "Option Explicit" : ça t'obligera à dimensionner tes variables, c'est chiant au début, mais on s'y habitue vite et tu détecteras beaucoup plus facilement les erreurs

Vala
Jack
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
25 janv. 2004 à 19:11
Bonsoir
Ou bien : Outils => Options => Editeur
cocher 'Déclaration des variables obligatoire'
et le 'Option Explicit' sera automatiquement ajouté en tête de chaque nouvelle feuille iu nouveau module.
0
Tomsower Messages postés 25 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 5 mai 2006
25 janv. 2004 à 19:21
euh en faite le then oublier c'est moi qui est mal recopier..desole p
Mais en fait si j'ai bien compris c'est que le cancel renvoit une chaine vide mais si on veut une boucle qui oblige l'utilisateur a remplir le champ (sauf s'il click sur cancel) alors ce n'est pas possible. En gros écrire :if nom "" et if nom empty revient au meme je me trompe ? en tout cas mon exemple en haut ne marche meme avec le then :)
Merci quand meme )
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
25 janv. 2004 à 21:45
Bonsoir
Peut-être une solution :
on initialise Nom à " " (un espace) en utilisant l'argument 'Default' (3ème argument) de l'InputBox
Cet espace est sélectionné si bien que si on saisit un texte, ce texte remplace l'espace.
Si on clique sur OK sans saisie, Nom est toujours un espace et on boucle (Loop)
Si on clique sur Cancel, l'InputBox renvoie une chaîne vide (donc différente d'un espace) et on sort. Dans ce cas, il faut peut-être prévoir un Nom par défaut (Inconnu par exemple).
Dim Nom As String
Do
    Nom = InputBox("Saisir le nom", , " ")
Loop While Nom = " "If Nom "" Then Nom "Inconnu"
0

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

Posez votre question
Tomsower Messages postés 25 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 5 mai 2006
25 janv. 2004 à 22:36
ah oui pas bete merci :) j'essayerais )
0
Rejoignez-nous