SetFocus

SetFocus - VB/VBA/VBS - Programmation

Marsh Posté le 16-08-2007 à 06:40:27    

Salut,
 
J'ai un souci de focus sur TextBox ... Quand je fais un SetFocus après une erreur de saisie, celui-ci se fait sur la TextBox suivante !
 
Comment modifier le code ci-dessous pour faire en sorte qu'en cas d'erreur de saisie des TextBox1 TextBox2 ou TextBox3, le champs en erreur soit selectionner ???
 
Merci pour votre aide,
 
Voici le code :
 

Code :
  1. Private Sub UserForm_Initialize()
  2. TextBox1.Value = "00:00"
  3. TextBox2 = "00:00"
  4. TextBox3.Value = "00:00"
  5. End Sub
  6. Private Sub TextBox1_AfterUpdate()
  7. horaire1 = TextBox1.Value
  8. If Len(horaire1) <> 5 Or Left(Right(horaire1, 3), 1) <> ":" Then
  9. MsgBox ("ATTENTION >>> L'heure de Début doit être au format hh:mm" & Chr(13) & Chr(13) & "Merci de vérifier votre saisie." ), vbExclamation, "Erreur de Saisie ..."
  10. TextBox1.Value = "00:00"
  11. TextBox1.SetFocus
  12. Cancel = True
  13. TextBox1.SelStart = 0
  14. TextBox1.SelLength = Len(TextBox1.Text)
  15. End If
  16. End Sub
  17. Private Sub TextBox3_AfterUpdate()
  18. horaire3 = TextBox3.Value
  19. If Len(horaire3) <> 5 Or Left(Right(horaire3, 3), 1) <> ":" Then
  20. MsgBox ("ATTENTION >>> L'heure de Fin doit être au format hh:mm" & Chr(13) & Chr(13) & "Merci de vérifier votre saisie." ), vbExclamation, "Erreur de Saisie ..."
  21. TextBox3.Value = "00:00"
  22. TextBox3.SetFocus
  23. Cancel = True
  24. TextBox3.SelStart = 0
  25. TextBox3.SelLength = Len(TextBox3.Text)
  26. End If
  27. Dim H1 As Date
  28. Dim H3 As Date
  29. H1 = CDate(TextBox1.Value)
  30. H3 = CDate(TextBox3.Value)
  31. If H3 <= H1 Then
  32. MsgBox ("ATTENTION >>> Merci de vérifier la cohérence de l'Heure de Fin." ), vbExclamation, "Erreur de Saisie ..."
  33. TextBox2 = "00:00"
  34. TextBox3.Value = "00:00"
  35. End If
  36. End Sub

Reply

Marsh Posté le 16-08-2007 à 06:40:27   

Reply

Marsh Posté le 16-08-2007 à 13:35:42    

Peut-être que le problème viendrait de
 
 TextBox1.Value = "00:00"
 
qui est une mise à jour, laquelle déclencherait un second passage dans AfterUpdate(), lequel ne détecterait pas d'erreur, et donc il y aurait un passage au champ suivant.

Reply

Marsh Posté le 16-08-2007 à 14:03:52    

Où exactement ???
 
Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed