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:
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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:
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
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" <ssteph@skynet.be> a écrit dans le message de news:
eahTt9N$EHA.1300@TK2MSFTNGP14.phx.gbl...
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:
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
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:
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