Saisie Format heure (00:00) dans Textboxt VB.NET

julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 - 8 mars 2020 à 17:22
Whismeril Messages postés 19082 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 juillet 2024 - 8 mars 2020 à 23:11
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


Merci de votre coup de pouce
Cordialement

7 réponses

Whismeril Messages postés 19082 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 juillet 2024 658
8 mars 2020 à 21:59
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"


Voilà, rien d'autre à faire.
1
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024
8 mars 2020 à 22:38
Alors Là!!! J'ai presque honte d'avoir Demandé .La solution était ....à deux clics. Encore fallait il le savoir
Grand grand merci Mr Whismeril
0
Whismeril Messages postés 19082 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 juillet 2024 658 > julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024
8 mars 2020 à 23:11
De rien
0
vb95 Messages postés 3478 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 8 juillet 2024 169
8 mars 2020 à 17:39
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
0
Whismeril Messages postés 19082 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 juillet 2024 658
8 mars 2020 à 17:42
Bonsoir

Ben oui vba et vb.net c’est pas pareil.

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.
0
vb95 Messages postés 3478 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 8 juillet 2024 169
8 mars 2020 à 17:50
Bonsoir Whis
c'est
e.KeyCode
qui fournit le caractère tapé au clavier en VB Net en utilisant l'évènement TextBox1.KeyDown

0
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024
8 mars 2020 à 18:05
Merci
Donc si je remplace
KeyAscii
par
e.KeyCode 

ca devrait marcher .
J'essaie...
0
Whismeril Messages postés 19082 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 juillet 2024 658
8 mars 2020 à 18:37
Salut, oui mais si elle s'est abonnée au KeyPress c'est e.KeyChar.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vb95 Messages postés 3478 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 8 juillet 2024 169
8 mars 2020 à 18:08
Bonsoir
On ne code pas en VB Net de la même façon qu'en VBA .
Cela m'étonnerait beaucoup que cela fonctionne
0
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024
8 mars 2020 à 18:19
Non effectivement
échec total
aurais tu une proposition de code?
Merci d'avance
0
vb95 Messages postés 3478 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 8 juillet 2024 169
8 mars 2020 à 18:31
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

0
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024
8 mars 2020 à 18:46
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
0
Whismeril Messages postés 19082 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 juillet 2024 658
8 mars 2020 à 19:38
Keycode n’est pas une string, c’est une énumération, sa valeur est Keys.quelquechose
0
vb95 Messages postés 3478 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 8 juillet 2024 169
Modifié le 8 mars 2020 à 23:20
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
0
Rejoignez-nous