Bonjour chers tous
Je bloque vraiment dans mon projet pour "obliger" la saisie numérique de format heure .
J'obtiens l'erreur KeyAscii nest pas déclaré sur ce code qui fonctionne parfaitement sur un projet Excel.
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(Textheure.text) = 5 Then KeyAscii = 0 : Exit Sub
'ici on empeche de taper plus gros que 2 pour le premier chiffre de l'heure
If Len(Textheure.text) = 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(Textheure.text) = 1 And Textheure.text = 2 And Not ChrW(KeyAscii) Like "[0-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(Textheure.text) = 3 And Not ChrW(KeyAscii) Like "[0-1-2-3-4-5]" Then KeyAscii = 0
If Len(Textheure.text) = 2 Then
If ChrW(KeyAscii) <> ":" Then KeyAscii = Asc(":")
End If
End If
Bon maintenant, que j'ai accès à un PC.
J'ai posé une MaskedTextBox sur un winform, cliqué sur la petite flèche au dessus de la zone de saisie, pour sur "Définire masque" et enfin j'ai sélectionné "Heure"
Bonsoir
Excel utilise VBA ( Visual Basic Application) et n'a rien à voir avec VB Net .
C'est comme mélanger les torchons et les serviettes en faisant la lessive
Si tu regardes la signature de l’événement dans vba tu verras que la variable keypress y est passée en paramètre alors que dans la signature de vb.net il y a sender et e.
La touche tapée est une des propriétés de e, là de tête je ne sais plus laquelle.
Mais que ce soit en vba ou en vb.net, je pense qu’une maskedtextbox est plus facile à utiliser.
Bonsoir
Regarde ce que fait ce code et comprends le .
Ensuite tu pourras coder pour ta saisie d'heure
Private Sub Textbox1_KeyDown(sender As Object, e As KeyEventArgs) Handles Textbox1.KeyDown
Select Case e.KeyCode
Case "1"
MessageBox.Show("la touche tapée est 1")
Case "2"
MessageBox.Show("la touche tapée est 2")
Case "3"
MessageBox.Show("la touche tapée est 3")
End Select
Je l'ai testé mais il ne se passe rien : pas de message box
Private Sub Textheure_KeyDown(sender As Object, e As KeyEventArgs) Handles Textheure.KeyDown
Select Case e.KeyCode
Case "1"
MessageBox.Show("la touche tapée est 1")
Case "2"
MessageBox.Show("la touche tapée est 2")
Case "3"
MessageBox.Show("la touche tapée est 3")
End Select
End Sub
Désolé pour l'erreur Whis : j'ai tapé de tête trop vite depuis un morceau de code issu de mes projets
Voici le code correct
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
Select Case e.KeyCode
Case Keys.NumPad1
MessageBox.Show("la touche tapée est la touche numérique 1")
Case Keys.NumPad2
MessageBox.Show("la touche tapée est la touche numérique 2")
Case Keys.NumPad3
MessageBox.Show("la touche tapée est la touche numérique 3")
Case Keys.A
MessageBox.Show("la touche tapée est la lettre a")
End Select
End Sub
Mais Whismeril a proposé du largement mieux avec un MaskedTextBox au message 11
Grand grand merci Mr Whismeril