Obliger saisie dans TextBox en chiffres, a partir du nombre 0 jusqu'au 8

Bernard-Louis

XLDnaute Occasionnel
Bonjour,
Comment est il possible dans une TextBox d'un formulaire, d'obliger la saisie de nombres compris entre 0 et 8.(avec et sans décimales)
Car la saisie par jour ne doit pas depasser 8 heures.
Merci pour l'aide
 

Odesta

XLDnaute Impliqué
Re : Obliger saisie dans TextBox en chiffres, a partir du nombre 0 jusqu'au 8

Bonjour

Je pense qu'une formule du genre

Si (le contenu du texte box n'est pas un nombre) ou (le contenu du texte box est inférieur à 0 ou supérieur à 8) alors
(supprimer le contenu du texte box)

Cela fonctionne assez bien. On peut même rajouter un message pour mensionner de ne mettre que des heures entre 0 et 8.

Une nuance toutefois : il est bon de rajouter un (tranformer les "." en ",") car les utilisateurs aiment bien utiliser le point du clavier numérique car le "." transformera un "long" en "string" (sauf réglage spécifiques de votre Excel)


Cdt
Olivier
 

kjin

XLDnaute Barbatruc
Re : Obliger saisie dans TextBox en chiffres, a partir du nombre 0 jusqu'au 8

Bonjour,
Code:
Private Sub TextBox1_Change()
If Len(TextBox1) > 1 Then TextBox1 = Left(TextBox1, 1)
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr(1, "012345678", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
A+
kjin
 

Bernard-Louis

XLDnaute Occasionnel
Re : Obliger saisie dans TextBox en chiffres, a partir du nombre 0 jusqu'au 8

Merci Odesta, KJIN,

Le problème que j'ai avec le code de KJIN :
Il ne me prend pas 0,5 heure et il ne bloque pas la saisie si j'inscris 10 heures par exemple.
Quelle serait la solution ?
Merci pour l'aide
 

kjin

XLDnaute Barbatruc
Re : Obliger saisie dans TextBox en chiffres, a partir du nombre 0 jusqu'au 8

Re, sakut Odesta,
Il ne me prend pas 0,5 heure
Effectivement, j'ai zappé cette partie
et il ne bloque pas la saisie si j'inscris 10 heures par exemple.
Là par contre je m'étonne !

Nouvelle mouture...
Code:
Private Sub TextBox1_Change()
If Val(TextBox1) > 8 Then TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr(1, "0123456789,", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
...qui n'empêchera pas d'inscrire 0,84562, alors quoi fait-on ?
A+
kjin
 

Discussions similaires

Statistiques des forums

Discussions
312 347
Messages
2 087 501
Membres
103 563
dernier inscrit
samyezzehar