Inputbox excel

Résolu
zbuck Messages postés 21 Statut Membre -  
zbuck Messages postés 21 Statut Membre -
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

5 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    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
  2. zbuck Messages postés 21 Statut Membre 4
     
    j'ai oublié de dire que la variable était déclarée en ' integer'
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      C'est pour ça que ça ne fonctionne pas !
      Inputbox renvoi une valeur de type string.
      0
    2. Info
       
      Bonjour,

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

      Cdt

      Info
      0
  3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  4. zbuck Messages postés 21 Statut Membre 4
     
    Ok code testé cela fonctionne
    Merci pour les conseils C'est sympa
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. zbuck Messages postés 21 Statut Membre 4
     
    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