Saisie de l'heure dans textbox

Bonjour

Comment procéder pour que l'on puisse écrire l'heure dans une textbox , de façon à ce que à la suite de la saisie des 2 premiers chiffres (et que des chiffres ) s'affiche automatiquement le séparateur (:) entre heure et minutes, pour ensuite saisir la valeur des minutes ... et bien sûr que cette inscription corresponde à une heure valide...

merci

Bonjour Jpmalb, bonjour le forum,

On peut aisément demander le rajout de ":" après le deuxième caractère édité. Mais on arrive vite a une usine à gaz si on veut traiter tous les cas de figure.

If Len(Me.TextBox1) = 2 Then Me.TextBox1.Value = Me.TextBox1.Value & ":"

L'utilisateur tape 82 au lieu de 0802. il obtient 82:00 (82 heures) au lieu de 08:02 (8 heures et 2 minutes), Et pour 08:20 ?... Bref, tu vois c'est pas simple...

Tu peux aussi utiliser deux TextBoxes dont le nombre de caractères est limité à deux. La première pour les heures et la seconde pour les minutes mais il faudra coder pour que ça devienne une valeur au format hh:mm.

Private Sub TextBox2_AfterUpdate()
Dim H As Date
H = TimeSerial(Me.TextBox1.Value, Me.TextBox2.Value, 0)
MsgBox H
End Sub

Bonjour

a voir aussi usine a gaz

'************************************************************************
' Initialisation des textbox au format heure
'************************************************************************
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   Call TextHeure(KeyAscii, 1)
End Sub

Private Sub TextBox20_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   Call TextHeure(KeyAscii, 20)
End Sub

Private Sub TextHeure(KeyAscii, Tex)
Dim touche_autoris?e As String
touche_autoris?e = "[01234567989:]"
'on ne peut pas taper autre chose que des chiffres
If Not ChrW(KeyAscii) Like touche_autoris?e Then KeyAscii = 0
  'ici on empeche de taper plus de 4 chiffre(2 pour l'heure,2pour les minutes )
  If Len(Controls("TextBox" & Tex)) = 5 Then KeyAscii = 0: Exit Sub
   'ici on empeche de taper plus gros que 2 pour le premier chiffre de l'heure
   If Len(Controls("TextBox" & Tex)) = 0 And Not ChrW(KeyAscii) Like "[0-1-2]" Then KeyAscii = 0
     'ici on empeche de taper plus gros que 3 pour le deuxieme chiffre de l'heure en fonction du premier
     If Len(Controls("TextBox" & Tex)) = 1 And Controls("TextBox" & Tex).Value = 2 And Not ChrW(KeyAscii) Like "[1-2-3]" Then KeyAscii = 0
        'ici on empeche de taper plus gros que 5 pour les dizaine de minute(59 minutes maximum)
        If Len(Controls("TextBox" & Tex)) = 3 And Not ChrW(KeyAscii) Like "[1-2-3-4-5]" Then KeyAscii = 0
   If Len(Controls("TextBox" & Tex)) = 2 Then
     If ChrW(KeyAscii) <> ":" Then KeyAscii = Asc(":")
   End If
End Sub

A+

Maurice

merci beaucoup pour ces réponses...

c'est vrai que pour le confort de l'utilisateur, ça fait beaucoup d'instructions...

trop fort...comme d'hab, Maurice a réponse à tout...

(Oserais-je la pub d'il y a quelques années ..."tu pousses le bouchon un peu trop loin, Maurice...")

Bonjour,

ci-jointe une proposition avec mon contrôle heures/minutes

642controle-heures.xlsm (35.15 Ko)
Rechercher des sujets similaires à "saisie heure textbox"