Inputbox excel

Résolu/Fermé
zbuck Messages postés 20 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 17 mars 2011 - 15 mars 2011 à 21:49
zbuck Messages postés 20 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 17 mars 2011 - 17 mars 2011 à 22:17
Bonjour, voici quelques lignes de code que je veux améliorer.
saisie_2:
valeur = InputBox("entrer le numero de la ligne.....")
If valeur < 6 or valeur > 10 Then
MsgBox ("valeur incorrecte")
GoTo saisie_2
je souhaiterai interdire en plus, la saisie d'une valeur 'vide', j'ai donc écris :
If valeur = "" or valeur < 6 or valeur > 10 Then
mais cela ne fonctionne pas , j'ai aussi essayé la fonction :do while.....loop; problème identique
avez_vous une solution Merci
A voir également:

5 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 778
15 mars 2011 à 22:18
Normal, la variable valeur n'est pas définie !

En VBA, il existe une excellente habitude à prendre, qui consiste à commencer systématique le code par Option Explicit et donc à déclarer toutes les variables utilisées :

Option Explicit

Sub test()
Dim Rep As String

saisie_2:
  Rep = InputBox("entrer le numero de la ligne.....")
  If Rep = "" Or Val(Rep) < 6 Or Val(Rep) > 10 Then
    MsgBox ("valeur incorrecte")
    GoTo saisie_2
  End If

End Sub
0
zbuck Messages postés 20 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 17 mars 2011 4
15 mars 2011 à 22:27
j'ai oublié de dire que la variable était déclarée en ' integer'
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 778
15 mars 2011 à 23:00
C'est pour ça que ça ne fonctionne pas !
Inputbox renvoi une valeur de type string.
0
Bonjour,

Voir l'aide de Excel [ InputBox, Méthode], l'instruction [ InputBox ] peut
renvoyer autre chose qu'une string.

Cdt

Info
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
Modifié par pijaku le 16/03/2011 à 13:53
Bonjour,
Comme l'on dit mes collègues, InputBox toute simple renvoie un String. D'ou l'incompatibilité de type...
On peux utiliser :
Application.InputBox("bla bla",Type:=1)
Les différents types d'InputBox : ici
Il faut aussi éviter les goto...
voici ma proposition :
Sub test() 
Dim valeur As Integer 

valeur = Application.InputBox("entrer le numero de la ligne.....", Type:=1) 
Do While valeur < 6 Or valeur > 10 
    MsgBox ("valeur incorrecte") 
    valeur = Application.InputBox("entrer le numero de la ligne.....", Type:=1) 
Loop 
    MsgBox valeur & " est une valeur correcte" 
End Sub

Ne pas compléter l'InputBox renvoie un message d'erreur Excel, donc il est inutile de traiter ce cas...
Franck P
0
zbuck Messages postés 20 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 17 mars 2011 4
16 mars 2011 à 22:28
Ok code testé cela fonctionne
Merci pour les conseils C'est sympa
0

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

Posez votre question
zbuck Messages postés 20 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 17 mars 2011 4
17 mars 2011 à 22:17
Merci pour les aides et info . Il existe parfois plusieurs solutions pour un même problème ,dans le cas présent on pouvait aussi le résoudre en déclarant la variable en type ' variant'
Merci encore pour pour vos efforts et disponibilité A+
0