Boite de dialogue

Bonjour à tous,

Je suis en train de tester des boites de dialogues cependant il y a quelque chose que je ne comprend pas sur les "Cancel" :

Dans mon fichier, si je ne remplie rien puis cancel, pas de probleme, mais si je remplie quelque chose qui ne commence pas par un nombre puis cancel ça bug ( Error dismatch )

Merci d'avance et bonne journée

Maxime

24test.xlsm (60.24 Ko)

Bonjour

Je ne comprends pas , chez moi, ces cas de figure fonctionnent

???

Bye

Bonjour,

Pas vu d'erreur en utilisant Annuler ?

Que comptes-tu faire avec StrPtr (fonction masquée et non documentée) ?

Tes deux tests successifs conduisent :

  • Annuler => sortie de boucle
  • OK (sans saisie) => MsgBox : si Annuler => sortie de Proc.

(ce qui ne me paraît pas cohérent [mais je n'ai pas tout lu])

NB-

Loop While 1 = 1

Tu as l'intention de pouvoir créer une boucle infinie ?

StrPtr(nomtot) = 0 est la premiere condition d'annulation du Inputbox, je n'ai rien trouvé d'autre qui fonctionnait...

Ensuite l'erreur vient de si on rempli un projet "p" puis qu'on appuie sur Cancel sur le message d'erreur. Vraiment je ne comprend pas la difference entre la methode de gestion d'erreur numero 1 (Si la saisie est empty) et la methode numero 2 (si la saisi ne commence pas par un nombre)

Et oui, mon but est de créer une boucle infini, tant que le resultat n'est pas celui que je veux ou tant que l'utilisateur ne clique pas sur "Cancel", ça boucle, d'où l'importance des Cancel ^^

Bon bah en faite, après manger l'esprit est plus clair, et j'ai décelé l'erreur :

ques = MsgBox("The project name is without reference, continue?", vbYesNoCancel + vbExclamation + vbDefaultButton2, "Project name")

If ques = vbYes Then

Exit Do

Else: If ques = vbCancel Then Exit Sub

A la ligne 24 !

Désolé du dérangement x)

Bonne journée !

Pas compris, mais tu étais seul à avoir ton erreur !

Pour ce qui est de la boucle infinie, pas besoin de tester si : 1 = 1 tu ne mets rien, ça suffit et tu ne pourras sortir que par un Exit Do. (Esprit tortueux ?)

InputBox renvoie toujours une valeur de type String, ce ne peut donc être Empty. En fait on constate que en cas de clic sur Annuler c'est la valeur vbNullString qui est renvoyée, pour laquelle StrPtr renvoie 0, mais un clic sur OK sans saisie dans la boîte renvoie une chaîne vide (valeur que l'on note par ""), pour laquelle StrPtr ne renvoie pas 0.

Je ne comprends la raison de ta distinction, mais pas grave...

Bye.

Ahhhh merci, pour If nomtot = vbNullString Then Exit Do cela fonctionne !!

En gros si vous voulez tester mon erreur sur le fichier de base : marquer "p" puis cliquer sur "Ok" puis "Cancel" et erreur de mysmatch

Rechercher des sujets similaires à "boite dialogue"