Inputbox excel

Résolu
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. 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
    1. j'ai oublié de dire que la variable était déclarée en ' integer'
      0
      1. C'est pour ça que ça ne fonctionne pas !
        Inputbox renvoi une valeur de type string.
        0
      2. Bonjour,

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

        Cdt

        Info
        0
    2. Modérateur
      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
      1. Ok code testé cela fonctionne
        Merci pour les conseils C'est sympa
        0
        1. 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