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