Obliger une saisie d'entier probleme

Fermé
Luigiz31 - 22 févr. 2015 à 13:58
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 - 22 févr. 2015 à 16:25
bonjour a tous,
j'essai de faire une macro sous exel avec une input box dans laquelle je rentre un caractère et tant que ce caractère n'est pas un nombre et qu'il n'est pas entier sa affiche un msgbox. Le problème est que pour la boucle pour tester si c'est un entier ou un décimale est "zapper" il ne passe pas dedans et je ne comprend pas pourquoi.

Dim nombre as string
nombre = InputBox("Entrez une une valeur entière de x", "Valeur de x")
While IsNumeric(nombre) = False
MsgBox "Vous n'avez pas entré un nombre "
nombre = InputBox("entrez une une valeur entière de x", "Valeur de x")
Wend
While nombre Mod 1 <> 0
MsgBox "Vous n'avez pas entré un nombre entier "
nombre = InputBox("entrez une une valeur entière de x", "Valeur de x")
Wend
'blablabla

merci d'avance pour votre aide

4 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
22 févr. 2015 à 14:05
A la place de faire 2 boucles, fais-en une seule, et utilises une variable booléenne pour indiquer si le nombre est bon ou pas.
0
je ne comprends pas vraiment comment faire utiliser la booléenne dans cas la peut tu me le mettre en code stp ?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
22 févr. 2015 à 15:20
Bonjour,

Sub essai()
Dim rep As Integer
rep = Application.InputBox("Entrez une une valeur entière de x", "Valeur de x", Type:=1)
End Sub

0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
Modifié par ccm81 le 22/02/2015 à 16:42
Bonjour à tous

Ou si tu ne veux pas accepter une saisie non entière

Dim rep
Do
  rep = Application.InputBox("Entrez une une valeur entière de x", "Valeur de x", "", Type:=1)
Loop Until rep = Int(rep)


Cdlmnt
0