Valider les données saisie dans une Message box

flobzh

XLDnaute Nouveau
Bonjour le forum,

Voici une parti du code pour le quel j'aimerai avoir quelque conseil :
Code:
         Ns = InputBox(("Le document est existant" & Chr(10) & "Liste des documents similaires : " & Chr(10) & Chr(10) & Msg & _
         Chr(10) & "Entrez un nouveau N° d'ordre : " & Chr(10) & "(comprie entre 0 et " & Nmax & ")"), "Doublon")
         If Ns = "" Then Exit Sub
        
    'Control entré numérique
        While Not IsNumeric(Ns)
           MsgBox "Le saisi n'est pas un nombre.", vbExclamation, "Message d'erreur"
            Ns = InputBox(("Le document est existant" & Chr(10) & "Liste des documents similaires : " & Chr(10) & Chr(10) & Msg & _
           Chr(10) & "Entrez un nouveau N° d'ordre : " & Chr(10) & "(comprie entre 0 et 9999)"), "Doublon")
           If Ns = "" Then Exit Sub
        Wend
    'Control entré entre 0 et Nmax
        While Ns < 0 Or Ns > Nmax
             MsgBox "Le nombre n'est pas dans la plage valide.", vbExclamation, "Message d'erreur"
             Ns = InputBox(("Le document est existant" & Chr(10) & "Liste des documents similaires : " & Chr(10) & Chr(10) & Msg & _
             Chr(10) & "Entrez un nouveau N° d'ordre : " & Chr(10) & "(comprie entre 0 et 9999)"), "Doublon")
             If Ns = "" Then Exit Sub
                      
        Wend
    End If

Ça se voie que je débute ?
J'explique, suite a la saisi d'une valeur (Ns) dans la message box je souhaite contrôler que celle-ci est un nombre compris entre 0 et Nmax.
Je rencontre deux problème, d'une part la comparaison ne marche pas bien
Code:
While Ns < 0 Or Ns > Nmax
D'autre par si lors de la dernière vérification l'utilisateur saisi une entrée non numérique, j'ai un message d'erreur.
Pour resumé, j'aimerai une boucle qui vérifié les trois condition : 0 < Ns < Nmax, IsNumeric(Ns).
Je trouve également mon code très répétitif. Peut-on le simplifier ?
Merci pour votre aide
 

Pierrot93

XLDnaute Barbatruc
Re : Valider les données saisie dans une Message box

Bonjour,

plutôt qu'avec la fonction "inputbox", un exemple ci-dessous avec la méthode "inputbox" :
Code:
Option Explicit
Sub test()
Dim i As Long, j As Long
j = 100
i = -1
Do While i < 0 Or i > j
i = Application.InputBox("saisissez un nombre...", Type:=1)
Loop
End Sub
bonne journée
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 606
Messages
2 090 183
Membres
104 441
dernier inscrit
Dobbzzz