VBA n'accepter qu'une valeur comprise entre 0 et 10

  • Initiateur de la discussion Initiateur de la discussion fb62840
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

fb62840

XLDnaute Impliqué
Bonjour à toutes et tous,

Je voudrais, dans une textbox, obtenir que soit impérativement saisi dans une TextBox de formulaire un nombre compris entre 0 et 10.

J'ai bien vu des codes utilisant les ASCII mais ils proposaient une valeur comprise entre 0 et 9 pas de 0 à 10

Merci pour votre aide
 
Re : VBA n'accepter qu'une valeur comprise entre 0 et 10

Bonjour,

essaye peut être ceci :
Code:
Option Explicit
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Exit Sub
    If CDbl(TextBox1 & Chr(KeyAscii)) > 10 Then KeyAscii = 0
End Sub
bon après midi
@+

Edition : bonjour Hasco🙂
 
Dernière édition:
Re : VBA n'accepter qu'une valeur comprise entre 0 et 10

Bonjour,

Une des nombreuses possibilité:
Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr(1, "0123456789", Chr(KeyAscii)) = 0 Or Val(Trim(TextBox1) & Chr(KeyAscii)) > 10 Then KeyAscii = 0
End Sub

A+

[Edit] Bing Pierrot🙂 et grand Salut🙂
 
Re : VBA n'accepter qu'une valeur comprise entre 0 et 10

Bonjour à tous les deux,

Merci pour ces propositions.

Il me reste un souci,

avec ce code :
Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr(1, "0123456789", Chr(KeyAscii)) = 0 Or Val(Trim(TextBox1) & Chr(KeyAscii)) > 10 Then KeyAscii = 0
End Sub

Si je cherche à saisir par exemple 11 seul le 1er 1 est saisi, serait-il possible de faire en sorte que rien ne soit saisi en cas d'erreur ? (j'insèrerai une msgbox d'alerte pour indiquer à l'utilisateur qu'il doit entrer une saisie correcte).
 
Re : VBA n'accepter qu'une valeur comprise entre 0 et 10

Re,

Alors pour ne pas faire un usine à gaz dans KeyPress on s'y prend autrement:

Code:
Private Sub TextBox1_Change()
If Val(Trim(TextBox1)) > 10 Then
    TextBox1 = ""
    MsgBox "le message d'avertissement"
End If
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr(1, "0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

A+
 
Dernière modification par un modérateur:
Re : VBA n'accepter qu'une valeur comprise entre 0 et 10

bonjour tous🙂🙂🙂

a la place textbox plus simple mettre une combobox a mon avis!!

Code:
Private Sub UserForm_initialize()
 For i = 0 To 10: ComboBox1.AddItem i: Next
End Sub

dans proprietée combo... pour bloque ecriture
dans style tu mets a 2-fmstyleDropdownList
 
Re : VBA n'accepter qu'une valeur comprise entre 0 et 10

Re,

Bonjour Laetitia🙂
Ou un spinButton avec min=0 et max=10 accompagné d'un label et:
Code:
Private Sub SpinButton1_Change()
Label1.Caption = SpinButton1
End Sub

Ou 10 boutton d'options...arf😉

A++
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
40
Affichages
3 K
L
Réponses
9
Affichages
1 K
A
Réponses
11
Affichages
2 K
A
D
Réponses
4
Affichages
1 K
Retour