Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[Résolu]Etonnant message dans une Application.Inputbox

mamyfik

XLDnaute Nouveau
Bonjour à tous!

Dans mon code vba, je créé une inputbox comme ceci :
Code:
Dim Annee as Integer

Annee = 1

While Annee < Year(Now) And Annee > 0
            Annee = Application.InputBox("En quelle année voulez-vous classer ce dossier?" _
            & vbCrLf & _
            "Saisissez une année supérieure ou égale à l'année en cours :", "Saisie de l'année", Type:=1)
Wend

Voilà le problème : lorsque l'utilisateur clique sur le bouton "OK" de l'inputbox, sans rien écrire dans le champ texte cela m'ouvre la boîte de dialogue d'erreur de formule:
"La formule que vous avez tapée contient une erreur [...]" et cela revient à l'inputbox naturellement, mais pas parce que l'inputbox est dans un "while". Du coup, je ne peux pas gérer cette erreur moi-même.

Je ne comprends pas du tout pourquoi cela fait cela, c'est complètement incohérent comme message d'erreur. Est-ce que quelqu'un sait ce qu'il se passe?
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Etonnant message dans une Application.Inputbox

Bonjour mamyfik

Il faut tester l'éat du inputbox avec if, il me semble.

Code:
Sub test()
Message = InputBox("combien?")
If Message = False Then Exit Sub Else ActiveCell = Message
End Sub
 

mamyfik

XLDnaute Nouveau
Re : Etonnant message dans une Application.Inputbox

Désolé!
J'avais complètement oublié le "Application.DisplayAlerts = False"! :/
Mais cela ne permet quand même pas de gérer ce cas...

[édit] J'ai posté en même temps que toi désolé! Je vais testé cela! Merci pour ta réponse [édit]
 
Dernière édition:

mamyfik

XLDnaute Nouveau
Re : Etonnant message dans une Application.Inputbox

Autant pour moi, j'ai lu ton message trop vite!

Non cela ne marche pas parce qu'en fait, le programme relance automatiquement l'inputbox, donc ne passe pas dans le "if". Je l'ai testé :/
 
G

Guest

Guest
Re : Etonnant message dans une Application.Inputbox

Bonjour mayfik,
Michel

Chez moi ceci fonctionne:

Code:
Annee = Year(Date) 
 
Do
             Annee = Application.InputBox("En quelle année voulez-vous classer ce dossier?" _
             & vbCrLf & _
             "Saisissez une année supérieure ou égale à l'année en cours :", "Saisie de l'année", Type:=1)
Loop While Annee < Year(Now)

A+
 
Dernière modification par un modérateur:

mamyfik

XLDnaute Nouveau
Re : Etonnant message dans une Application.Inputbox

Bonjour Hasco!

Oui, ceci marche dans le cas où l'utilisateur clique sur "Annuler", mais cela ne marche pas si il clique sur "OK" sans rien saisir, si?
 
G

Guest

Guest
Re : Etonnant message dans une Application.Inputbox

Re,

Non, mais cela tu ne l'empêchera pas. C'est la Méthode Application.InputBox qui veut cela. Avant de rendre la main, elle évalue l'expression entrée. s'il y a une erreur d'expression (text à la plage de nombre) elle renvoie un message correspondant à l'erreur.

Le textBox de la fenêtre est une sorte de contrôle RefEdit lié aux fonctions et méthodes excel. Les messages sont ceux de l'interface.

Utilise plutôt la FONCTION InputBox comme te l'a montrée MJ13 qui renvoie toujours un String, sans en évaluer l'expression.

Regarde l'aide sur InputBox (fonction) et InputBox (méthode) pour voir la différence.

A+
 

mamyfik

XLDnaute Nouveau
Re : Etonnant message dans une Application.Inputbox

D'accord je comprends!
Mais je trouve le message renvoyé ici vraiment incohérent, complètement HS!

Je ne savais pas qu'il y avait une si grande différence entre les deux inputbox. Enfin, que l'une était une méthode et l'autre une fonction
Merci pour ces éclaircissements!
Merci à vous deux!

++
 

MJ13

XLDnaute Barbatruc
Re : [Résolu]Etonnant message dans une Application.Inputbox

Re, Bonjour Ges

On peut l'écrire de différentes façons (Voir la pièce jointe) .
 

Pièces jointes

  • Inputbox_Annee.xls
    44.5 KB · Affichages: 59

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…