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

julia Namor
Messages postés
493
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
26 décembre 2020
- 8 mars 2020 à 17:22
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
- 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
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
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
493
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
26 décembre 2020

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
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596 > julia Namor
Messages postés
493
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
26 décembre 2020

8 mars 2020 à 23:11
De rien
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
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
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
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
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
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
493
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
26 décembre 2020

8 mars 2020 à 18:05
Merci
Donc si je remplace
KeyAscii
par
e.KeyCode 

ca devrait marcher .
J'essaie...
0
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
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
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
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
493
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
26 décembre 2020

8 mars 2020 à 18:19
Non effectivement
échec total
aurais tu une proposition de code?
Merci d'avance
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
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
493
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
26 décembre 2020

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
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
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
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
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