Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Test et changement valeur dans textbox

1 réponse
Avatar
Steph
Bonsoir,

Dans un textbox1 l'on rentre le résultat d'un set de tennis de table, pour
l'instant le résultat doit être écris comme ceci: 11-05, 15-13, 00-11 etc..
Je souhaiterais permettre de rentrer 11-8 ou 5-11 mais lorsque l'on quitte
le textbox, changer la valeur en 11-08 ou 05-11, comment faire, sachant que
je test déjà les valeurs rentrées avec le code ci dessous:

Merci pour votre aide,

Steph

-----------------------------------------------------

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

x = TextBox1.Value
nb = Len(x)
p = Val(Left(x, 2))
d = Val(Right(x, 2))
diff = Abs(p - d)

'TEST1 Si il y a bien 5 caractères et un tiret en 3e position et
'et que le 1er chiffres >=11 et que le second est <11 et que la différence
entre les
'deux résultats est égale à 2 ou supérieur mais que un des résultats est
'bien égale à 11 alors j'affiche le résultat
If nb = 5 And p = 11 And d < 11 And _
Mid(x, 3, 1) = "-" And diff >= 2 Then
If diff >= 2 And (p = 11 Or d = 11) Then
TextBox1 = x
'MsgBox "test1"
Else
GoTo Refuser
End If

'TEST2 idem Test1 sauf inversion des 2 chiffres
ElseIf nb = 5 And d = 11 And p < 11 And _
Mid(x, 3, 1) = "-" And diff >= 2 Then
If diff >= 2 And (p = 11 Or d = 11) Then
TextBox1 = x
'MsgBox "test2"
Else
GoTo Refuser
End If

'TEST3 Si il y a bien 5 caractères et un tiret en 3e position et
'que les 2 chiffres sont supérieur ou égale à 11 et que
'leur différence est égale à 2 alors affiche le résultat
ElseIf nb = 5 And d >= 10 And p >= 10 And _
Mid(x, 3, 1) = "-" And diff = 2 Then
TextBox1 = x
'MsgBox "test3"

'TEST4 si case vide OK
ElseIf nb = 0 Then
TextBox1 = x

Else
Refuser:
Cancel = True 'empêche la sortie du textbox en cours
TextBox1.SetFocus 'redonne le focus au textbox
TextBox1.SelStart = 0 'positionne le curseur au début du textbox
TextBox1.SelLength = Len(TextBox1) 'sélectionne le texte déjà entré
MsgBox "Vous devez entrer les données sous la forme" & Chr(10) & _
"de ces différents exemples" & Chr(10) & _
"" & Chr(10) & _
"11-09 ou 05-11 ou 11-00 ou 13-15 ou 03-11" & Chr(10) & _
"" & Chr(10) & _
"Si un des pointages dépasse 11, il doit y avoir un maximun" & Chr(10) & _
"de deux points de différence entre les deux chiffres." & Chr(10) & _
"" & Chr(10) & _
"Si vous souhaitez quitter, ne placer rien dans la case.", 48, "Erreur de
saisie - SET1"
End If
End Sub

1 réponse

Avatar
Steph
J'ai trouvé la réponse, sorry

Voici ma solution:
------------------
x = TextBox1.Value
nb = Len(x)
If nb = 4 Then 'Si oublier le 0 le rajouter
p = Val(Left(x, 2))
d = Val(Right(x, 2))
If p < 10 Then TextBox1.Value = "0" & (p) & "-" & (d)
If d < 10 Then TextBox1.Value = (p) & "-" & "0" & (Right(d, 1))
End If
--------------------------------
"Steph" a écrit dans le message de news:
eahTt9N$
Bonsoir,

Dans un textbox1 l'on rentre le résultat d'un set de tennis de table, pour
l'instant le résultat doit être écris comme ceci: 11-05, 15-13, 00-11
etc..

Je souhaiterais permettre de rentrer 11-8 ou 5-11 mais lorsque l'on quitte
le textbox, changer la valeur en 11-08 ou 05-11, comment faire, sachant
que

je test déjà les valeurs rentrées avec le code ci dessous:

Merci pour votre aide,

Steph

-----------------------------------------------------

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

x = TextBox1.Value
nb = Len(x)
p = Val(Left(x, 2))
d = Val(Right(x, 2))
diff = Abs(p - d)

'TEST1 Si il y a bien 5 caractères et un tiret en 3e position et
'et que le 1er chiffres > et que le second est <11 et que la différence
entre les
'deux résultats est égale à 2 ou supérieur mais que un des résultats est
'bien égale à 11 alors j'affiche le résultat
If nb = 5 And p = 11 And d < 11 And _
Mid(x, 3, 1) = "-" And diff >= 2 Then
If diff >= 2 And (p = 11 Or d = 11) Then
TextBox1 = x
'MsgBox "test1"
Else
GoTo Refuser
End If

'TEST2 idem Test1 sauf inversion des 2 chiffres
ElseIf nb = 5 And d = 11 And p < 11 And _
Mid(x, 3, 1) = "-" And diff >= 2 Then
If diff >= 2 And (p = 11 Or d = 11) Then
TextBox1 = x
'MsgBox "test2"
Else
GoTo Refuser
End If

'TEST3 Si il y a bien 5 caractères et un tiret en 3e position et
'que les 2 chiffres sont supérieur ou égale à 11 et que
'leur différence est égale à 2 alors affiche le résultat
ElseIf nb = 5 And d >= 10 And p >= 10 And _
Mid(x, 3, 1) = "-" And diff = 2 Then
TextBox1 = x
'MsgBox "test3"

'TEST4 si case vide OK
ElseIf nb = 0 Then
TextBox1 = x

Else
Refuser:
Cancel = True 'empêche la sortie du textbox en cours
TextBox1.SetFocus 'redonne le focus au textbox
TextBox1.SelStart = 0 'positionne le curseur au début du textbox
TextBox1.SelLength = Len(TextBox1) 'sélectionne le texte déjà entré
MsgBox "Vous devez entrer les données sous la forme" & Chr(10) & _
"de ces différents exemples" & Chr(10) & _
"" & Chr(10) & _
"11-09 ou 05-11 ou 11-00 ou 13-15 ou 03-11" & Chr(10) & _
"" & Chr(10) & _
"Si un des pointages dépasse 11, il doit y avoir un maximun" & Chr(10) & _
"de deux points de différence entre les deux chiffres." & Chr(10) & _
"" & Chr(10) & _
"Si vous souhaitez quitter, ne placer rien dans la case.", 48, "Erreur de
saisie - SET1"
End If
End Sub