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

Input Box

C

Charles

Guest
Bonjour à toutes et à tous !

J'ai deux Input Box :

ligne = InputBox("Entrer le numéro de ligne : ", "Modification", , 100, 100)

et une autre avec une date

sortie = InputBox("Entrer la date de début ", "Modification", , 100, 100)

J'aimerais faire marcher le bouton Annuler mais je n'arrive pas à lui faire comprendre le "vide".
If ligne = "" ... , ça ne marche pas. Que mettre ?

Je vous remercie par avance pour votre aide et vous souhaite une bonne reprise !

Charles
 
A

Abel

Guest
Bonjour Charles,

Pourtant, ça fonctionne bien chez moi.

Sub gfjh()
ligne = InputBox("vjhc", , "vsjh")
If ligne = "" Then MsgBox ("sgh")
End Sub

Je mets un message par défaut car si tu dis OK sur une entrée vide, ce sera cosidéré comme une annulation. Ce qui peut ne pas être le but recherché.

Abel
 
P

Pascal76

Guest
re

Cela te donnerait à peu près cela

Dim ligne As Integer
On Error Resume Next
ligne = InputBox("Entrer le numéro de ligne : ", "Modification", , 100, 100)
If ligne = 0 Then MsgBox "il ya une erreur"

ou si tu veux dans ce cas revenir à l'inputbox

Dim ligne As Integer
Debut:
On Error Resume Next
ligne = InputBox("Entrer le numéro de ligne : ", "Modification", , 100, 100)
If ligne = 0 Then
MsgBox "il ya une erreur"
GoTo Debut
End If

Pascal
 
P

Pascal76

Guest
Re

en gros cela veut dire en cas d'erreur continue

Donc si tu appuies sur ton bouton annuler il te renvoie "" ou si tu tapes un nombre non entier, comme tu as déclaré ligne en integer cela te donne une erreur (d'incompatibilté de type). Mais comme tu lui as dit de continuer il te mets ligne à 0 et là tu traites ce résultat.

Pascal
 
A

Abel

Guest
Re,

Dans l'exemple de Pascal, "ligne" est déclaré en tant que "Integer".

La ligne de code "ligne = InputBox("Entrer le numéro de ligne : ", "Modification", , 100, 100)" va donc attendre un "Integer".

Si tu cliques sur "Annuler", la fonction Inputbox va renvoyer "" qui est du texte.
D'où une incompatibilité de type et l'apparition d'un message d'erreur.

"On Erreur Resume Next", dans ce cas, précise au programme qu'il n'a qu'à se contenter du zéro que lui retourne la fonction Inputbox en cas d'annulation. Et p'is c'est comme ça.

Cela permet donc de conserver "ligne" en tant que "Integer", si c'est important pour la suite de ton programme, et de tester si "ligne" est égale à zéro.

Mets une apostrophe devant la ligne "On Error...." et fais une exécution pas à pas (F8 quand tu es dans VBE) avec une annulation sur la demande de l'Inputbox et regarde ce qui se passe.


En espérant ne pas avoir raconté trop de conneries.

Abel
 
C

Charles

Guest
Voilà qui est clair. Merci pour votre promptitude.

Pour la petite histoire, j'ai programmé pas mal en C et même VB. Autant l'algorithmie ne pose pas de problèmes (c'est souvent très simple aussi, il faut bien l'avouer ! ), autant j'ai toujours des problèmes de syntaxe en VB. Je ne sais jamais quoi utiliser ... manque de pratique sûrement. Par exemple, je n'ai toujours pas compris le passage d'une feuille à l'autre avec les Select, Activate ... c'est très flou dans ma tête.
Peut-être existe t-il un site qui reprend clairement les points essentiels ?!

Charles
 

Discussions similaires

Réponses
11
Affichages
706
Réponses
11
Affichages
424
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…