Comment obliger à la saisie d’un nombre ENTIER ?

Sebast

XLDnaute Impliqué
Bonjour à toutes et à tous,

Je ne sais pas comment forcer la saisie d’un nombre ENTIER.

Par le biais d’une inputbox, je recueille le mois (de 1 = janvier à 12 = décembre) servant à un traitement ultérieur.
J’arrive à tester si l’utilisateur ne saisit pas une valeur à côté de la plaque (<1 ou >12) et si la valeur saisie est bien numérique (Type:=1) mais je ne sais pas comment forcer l’utilisateur à rentrer un nombre ENTIER (donc refuser une saisie du type 4,8 par exemple, même si ça n’a pas beaucoup de sens mais c’est déjà arrivé car dans mon inputbox « grandeur nature », il y a en réalité bien d’autres infos demandées, pour certaines avec virgule, d’où parfois interversion …).

Je ne veux pas non plus « transformer » ultérieurement la valeur saisie en valeur entière par le biais par exemple de int(Valeur) car je veux que l’utilisateur se rende compte de son erreur …

Existe-t-il un paramètres obligeant à une saisie d’un nombre ENTIER (au même titre que Type:=1 force une saisie numérique) ?
Ou y a-t-il un autre moyen ?

Merci d’avance pour votre aide

XXXXXXXXXX ci-dessous mon code XXXXXXXXXXXXXXXXXXXXXXX

Sub Saisie_Valeur()

Dim MaValeur As Integer

MaValeur = Application.InputBox("Saisissez un chiffre", Type:=1)
If MaValeur > 12 Or MaValeur <= 0 Then
MsgBox "Vous devez saisir un chiffre entre 1 (janvier) et 12 (décembre)"
Else
MsgBox "Le mois choisi est " & MaValeur
' en fait un tout autre code mais pour plus de clarté, je ne me perds pas dans
‘ les méandres de la suite ...

End If

End Sub
 

Matt51100

XLDnaute Occasionnel
Re : Comment obliger à la saisie d’un nombre ENTIER ?

Salut tout le monde,

Tu pourrais tester toutes les valeurs. C'est à dire :
If MaValeur <> 1 or MaValeur <> 2 ..... or MaValeur <> 12 then
MsgBox "Vous devez saisir un chiffre entre 1 (janvier) et 12 (décembre)"
...

C'est pas très élégant mais cela doit marcher.

Sinon tu passes par un userform et une listbox proposant les nombres de 1 à 12.

A+, Matt.
 

Sebast

XLDnaute Impliqué
Re : Comment obliger à la saisie d’un nombre ENTIER ?

Bonjour Matt51100,

mon code teste déjà si je suis bien entre 1 et 12, le problème n'est pas là, il est plutôt que je ne sais pas comment obliger la saisie d'un nombre entier.

A +
 

Matt51100

XLDnaute Occasionnel
Re : Comment obliger à la saisie d’un nombre ENTIER ?

Re,

Oui j'ai bien vue. La solution que je te propose n'accepte que les nombres entiers de 1 à 12.
Après je ne sais pas si dans le code quelque chose est prévue spécifiquement pour ça.

A+, Matt.
 

Efgé

XLDnaute Barbatruc
Re : Comment obliger à la saisie d’un nombre ENTIER ?

Bonjour Sebast, Matt51100
Il y a quelque chose que je ne comprend pas.
Si tu déclare MaValeur As Integer, tu retrouvera toujours un entier quelque soit la saisie.
(Mais en déclarant Interger tu vas au devant d'un dépassement de capacité si on saisie un nombre trop grand. Il serait préférable, à mon avis, de la déclarer en Long.)
Mais si tu y tiens vraiment, on peux essayer ceci
VB:
If MaValeur > 12 Or MaValeur < = 0 Or MaValeur < > Int(MaValeur) Then
Cordialement
 
Dernière édition:

Sebast

XLDnaute Impliqué
Re : Comment obliger à la saisie d’un nombre ENTIER ?

Bonjour Efgé, Re Mat51100,

effectivement Mat51100, je n'avais pas bien lu ! désolé pour ma réponse impulsive. C'est une solution, il est vrai un peu lourde à mettre en oeuvre mais pourquoi pas.

Efgé : exact pour la déclaration de variable. En revanche, le fait de déclarer en integer ne force malheureusement pas à mettre la réponse en nombre entier (mais peut entraîner des dégâts comme évoqué).

Même si je saisis ton code, ça ne bloque pas l'utilisateur en l'invitant à saisir un nombre entier. Exemple : si tu saisis 1,2 (en pensant 12 par exemple), ça valide 1 et surtout donc, l'utilisateur ne se rend pas compte de l'erreur ...

Existe-t-il une solution "en amont" ?

Merci d'avance
 

Discussions similaires

Statistiques des forums

Discussions
312 298
Messages
2 086 977
Membres
103 416
dernier inscrit
SEB28110