Sortir d'une InputBox

Bonjour,

Une InputBox propose une valeur par défaut (le mois en cours)

L'utilisateur peut :

  • La valider (cas général) par OK
  • La modifier (cas fréquent) et valider par OK
  • Sortir par Annuler
  • Sortir par la X en haut à gauche de l'InputBox

Dans les 2 derniers cas (Sortir), je ne sais pas tester la valeur retournée pour proposer le traitement approprié (Exit Sub).

Sub Reporting_Mensuel()

    Dim Mois As String
    Mois = Month(Now())

    Mois = InputBox("Saisie du mois", "Mois", Mois)

    If Mois = " " Then
        Exit Sub
    End If

    ' Traitement du reporting mensuel

End Sub

Je me doute bien que de tester la valeur retournée = " " est idiot puisque il y a une valeur par défaut (Month(Now()).

Du coup, le traitement se déroule toujours avec cette valeur par défaut.

Impossible de sortir de la procédure.

Merci pour vos bons conseils.

Salut Dach2,

essaye ceci

Dim Mois$

Mois = Application.InputBox("Saisie du mois", "Mois", Month(Now))
If Mois = "" Or Mois = "Faux" Then Exit Sub

A+

Bonjour,

Ton code est bien conçu à un détail près, ce n'est pas :

If Mois = " " Then

avec un espace entre les guillemets mais :

If Mois = "" Then

car le clic sur Annuler ou sur la croix ne prend pas en compte la valeur inscrite dans le champs donc, même avec le numéro du mois inscrit dans le champ, si tu cliques sur Annuler ou sur la croix, la valeur retournée est une chaîne vide !

Salut Theze,

Annuler ou sur la croix, la valeur retournée est une chaîne vide !

Es-tu bien sûr? J'obtiens "Faux" quand je "capture" la réponse en MsgBox...

Bien à toi

Bonjour,

Bonjour curulis57, oui je suis sûr et je me demande comment tu peux avoir une réponse booléenne quand l'InputBox retourne une valeur de type String ?

extrait de l'aide :

...renvoie le contenu de la zone de texte sous la forme d'une valeur de type String.

...Si l'utilisateur clique sur OK ou appuie sur ENTRÉE , la fonction InputBox renvoie le texte contenu dans la zone de texte. Si l'utilisateur clique sur le bouton Annuler, la fonction renvoie une chaîne de longueur nulle ("").

Donc, l'appui sur le bouton Annuler ou la croix ne valide pas la saisie et de ce fait, ce qui se trouve dans la zone de texte n'est pas retourné, ce qui est retourné est une chaîne égale à "" donc, le test de la condition est correct : If Mois = "" Then

Bien sûr, ne pas confondre avec "Application.InputBox()" qui elle renvoi False quand on clique sur Annuler.

Bonne journée à toi

et à tout le monde bien sûr !

La solution de theze fonctionne parfaitement.

J'ai encore appris un truc

Merci infiniment à tous les deux et bonne journée.

Rechercher des sujets similaires à "sortir inputbox"