XL 2016 Autoriser saisie dans textbox

  • Initiateur de la discussion Initiateur de la discussion KTM
  • 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 !

KTM

XLDnaute Impliqué
Bonjour cher Forum
Jai un textbox dans lequel je voudrais limiter la saisie aux chiffres entiers allant de 0 a 100
Merci et bonne journee
 
Bonjour le forum
Bonjour KTM

Basiquement, tu peux faire ainsi :
VB:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim plage As Single

If TextBox1 = "" Then Exit Sub

plage = TextBox1

If plage < 1 Or plage > 100 Then
    Cancel = True
    MsgBox "Données non valide ! La valeur doit être comprise entre 1 et 100"
    TextBox1 = ""
End If
End Sub
Bonne journée à toutes & à tous
@+ Eric c
 
Bonjour le fil,

Une autre possibilité
VB:
Private Sub TextBox1_Change()
Dim vMax
vMax = 100
If TextBox1 = vbNullString Then Exit Sub
If Not IsNumeric(TextBox1) Then
  MsgBox "Ne saisir que des chiffres! Merci", vbCritical
  TextBox1 = vbNullString
  ElseIf Val(TextBox1) > vMax Then
  MsgBox "Valeur incorrecte!", vbCritical
  TextBox1 = 100
End If
End Sub
 
Bonjour KTM, Eric C, JM,
VB:
Private Sub TextBox1_Change()
TextBox1 = Left(TextBox1, 3)
If Not IsNumeric(Mid(TextBox1, 1, 1)) Then TextBox1 = Mid(TextBox1, 2)
If Not IsNumeric(Mid(TextBox1, 2, 1)) Then TextBox1 = Left(TextBox1, 1) & Mid(TextBox1, 3)
If Not IsNumeric(Mid(TextBox1, 3, 1)) Then TextBox1 = Left(TextBox1, 2)
If Val(Left(TextBox1, 3)) > 100 Then TextBox1 = Left(TextBox1, 2)
End Sub
Tout le monde sait que les messages sont casse-pieds !!!
 
Evidemment ceci est mieux :
VB:
Private Sub TextBox1_Change()
TextBox1 = Left(TextBox1, 3)
If Not IsNumeric(Mid(TextBox1, 1, 1)) Then TextBox1 = Mid(TextBox1, 2)
If Not IsNumeric(Mid(TextBox1, 2, 1)) Then TextBox1 = Left(TextBox1, 1) & Mid(TextBox1, 3)
If Not IsNumeric(Mid(TextBox1, 3, 1)) Or Val(TextBox1) > 100 Then TextBox1 = Left(TextBox1, 2)
End Sub
 
Re,

Sans message casse-pieds :
VB:
Private Sub TextBox1_Change()

Private Sub TextBox1_Change()

If TextBox1 > 100 Then
    Cancel = True
        TextBox1 = "Uniquement valeur" & vbCrLf & "numérique < à 100"
 With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(TextBox1.Text)
   End With
   End If

End Sub

End Sub
Oubli : mettre les propriétés : Multiline àTrue et MaxLenght à 3
@+ Eric c
 
Dernière édition:
Evidemment ceci est mieux :
VB:
Private Sub TextBox1_Change()
TextBox1 = Left(TextBox1, 3)
If Not IsNumeric(Mid(TextBox1, 1, 1)) Then TextBox1 = Mid(TextBox1, 2)
If Not IsNumeric(Mid(TextBox1, 2, 1)) Then TextBox1 = Left(TextBox1, 1) & Mid(TextBox1, 3)
If Not IsNumeric(Mid(TextBox1, 3, 1)) Or Val(TextBox1) > 100 Then TextBox1 = Left(TextBox1, 2)
End Sub
DEAR Job75
Merci enormement
 
Bonjour le fil

@ KTM, même si le code proposé ne te convient pas, prends au moins la peine de saluer la personne qui a pris de son temps pour tenter de te répondre et ce avec ses connaissances, quelles qu'elles soient. Il me semble que cela est la base même de la politesse, enfin me semble t'il ???
Ce forum est un forum d'entraide composé de passionnés d'EXCEL. Nous ne sommes pas tous des ténors du Vba mais avons le mérite pour grand nombre d'entre nous d'être polis et de tenter de rendre service aux personnes en difficultés.
Sur ce, bon dimanche à toutes & à tous
@+ Eric c
 
bonjour a tous
@Eric C j'aime bien l'idée du message directement dans le textbox avec le sellength (len) prêt pour une new saisie

ce sont de petits détails que j'aime beaucoup dans la prog vba excel

il est question de numérique; un test sur ce point serait bien venue aussi
perso je suis plutôt adepte des événements keypress et keydown en interceptant les keyascii et keycode
mais dans un contexte de simplicité d'un simple contrôle et (contrainte a une valeur) ton idée est nikel
pas de msgbox: POUAHH!!! les msgboxs 🙂

très bonne idée 😉
 
re
pas d'inter le dimanche ?
a ben ça rien est moins sur😉 c'est un peu le problème quand on développe un lien amical avec des clients réguliers
ils se permette de t'appeler pour n'importeNAOuAck
cela dit je me plaint pas c'est comme ca que je travaille 🙂

pour ton idée
VB:
Private Sub TextBox1_Change()
    With TextBox1
        .Value = Replace(.Value, ".", ",")    ' on accepte les décimales
        If .Value > 100 Or Not IsNumeric(.Value) Then
            Cancel = True
            .Value = IIf(.Value <> "", "Uniquement valeur  numérique < à 100", "")
            .SetFocus
            .SelStart = 0
            .SelLength = Len(.Value)
        End If
    End With
End Sub
 
Dernière édition:
- 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
6
Affichages
457
  • Question Question
Microsoft 365 Contrôle sur date
Réponses
8
Affichages
313
  • Question Question
Microsoft 365 couleur et ligne
Réponses
6
Affichages
177
Réponses
14
Affichages
444
Réponses
118
Affichages
2 K
Retour