Format d'heure d'une textbox

  • Initiateur de la discussion Initiateur de la discussion mask
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

mask

Guest
Bonsoir. 🙂

Pourriez vous m'aider s'il vous plait ?

J'ai une TextBox qui doit prendre une heure au format 08h52 par ex.

Le code.

Private Sub TextBox_dureeInc_Change()
Dim txt As Byte
TextBox_dureeInc.MaxLength = 5
txt = Len(TextBox_dureeInc)
If txt = 2 Then
TextBox_dureeInc = TextBox_dureeInc & ":"
End If
End Sub

Le problème est que si je souhaite effacer avec la touche return du clavier je suis
bloqué ici 08: et pas moyen d'effacer le 08:.
Par ailleurs je souhaites aussi ne pas pouvoir renter un heure tels que 22:99 mais être bloqué à 22h59.

Merci d'avance pour le débutant que je suis. 😱
 
Re : Format d'heure d'une textbox

bonjour,
Pour le nom du contrôle et la clarté du code j'utilise tbDurInc
une possibilité :
Code:
Private Sub tbDurInc_Change()
 tbDurInc.MaxLength = 5
 If Len(tbDurInc) = 2 Then
 tbDurInc = tbDurInc & ":"
 End If
 If Len(tbDurInc) = 4 And Mid(tbDurInc, 4) > 5 Then
 Beep
 tbDurInc = Left(tbDurInc, 3)
 End If
End Sub

Private Sub tbDurInc_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
    Case Is < 48, Is > 57
        KeyAscii = 0
    End Select
End Sub

Private Sub tbDurInc_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 8 And Len(tbDurInc) = 3 Then
tbDurInc = Left(tbDurInc, 1)
End If
End Sub
A+
 
Re : Format d'heure d'une textbox

Bonsoir.

Merci beaucoup pour ce bout de code, ça fonctionne car je ne peux pas aller au delà de 59. Mais je ne peux toujours pas effacer en utilisant la touche retour.
Merci grandement de ton aide. 🙂
 
Re : Format d'heure d'une textbox

Sissi !
la 3ème macro est faite pour ça...
Remplacer tbDurInc par le nom de ton contrôle

Nota : il est préférable de la remplacer par
Code:
Private Sub tbDurInc_Key[B]Down[/B](ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If KeyCode = 8 And Len(tbDurInc) = 3 Then
 tbDurInc = Left(tbDurInc, 1)
 End If
 End Sub
A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
945
S
  • Question Question
Réponses
7
Affichages
2 K
M
Réponses
1
Affichages
1 K
Retour