Bonsoir galopin01,
Merci pour explications.
Voila ce que j'ai tenté de modifier et ça marche !
J'ai ajouté cette ligne dans la fonction Check_hourFormat
If m Like "###" Then m = "0" & Left(m, Len(m) - 2) & Right(m, 2)
pour que le TextBox prend en charge la saisie de 3 chiffres.
Elle de devient :
Public Function Check_hourFormat(m As String) As Boolean
'Fonction permettant de vérifier l'heure entrée dans un TextBox par un
'utilisateur est de la forme hhmm
'checkformat renvoi 0 pour une saisie conforme, sinon 1
Dim hr As Integer 'variable des heures
Dim min As Integer 'variable des minutes
If Len(m) < 3 Then Exit Function 'si la valeur saisie par l'utilisateur est inférieur à
'3 caractères, alors Check_Hourformat non conforme
If m Like "##:##" Then m = Left(m, 2) & Right(m, 2)
If m Like "###" Then m = "0" & Left(m, Len(m) - 2) & Right(m, 2) '"0###"
If m Like "####" Then
hr = Fix(m / 100) ' permet de récupérer la partie concernant les heures
min = m - (hr * 100) ' permet de récupérer la partie concernant les minutes
If hr > 23 Or min > 59 Then Exit Function 'Vérifications des heures et minutes entrées
Check_hourFormat = True
End If
End Function
Et dans l’événement TextBox2_Exit(), j'ai ajouté cette ligne :
TextBox2 = Format(Left(TextBox2.Value, Len(TextBox2.Value) - 2), "00") & ":" & Right(TextBox2.Value, 2)
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'evenement LostFocus utilisé, ainsi la procédure s'exécute
'lors de la perte du focus par le contrôle TextBox2
'cette procédure appelle la fonction check_HourFormat
'si check_HourFormat = VRAI (True), elle formate le TextBox2 dans la forme hh:mm
If TextBox2.Value = "" Then Exit Sub
If Not Check_hourFormat(TextBox2.Value) Then
MsgBox "le format de l'heure saisie n'est pas valide", vbExclamation, "Erreur de saisie"
TextBox1.Value = ""
Cancel = True
Else
TextBox2 = Format(Left(TextBox2.Value, Len(TextBox2.Value) - 2), "00") & ":" & Right(TextBox2.Value, 2)
End If
End Sub