Salut à tous,
Comment je peux faire pour saisir des heures dans une textbox sous ce format "00:00", en fait, j'aimerais que les ":" soit bloqués dans la TB afin que l'utilisateur ai juste a saisir 15 00 et non 15:00
Merci
Salut à tous,
Comment je peux faire pour saisir des heures dans une textbox sous ce format "00:00", en fait, j'aimerais que les ":" soit bloqués dans la TB afin que l'utilisateur ai juste a saisir 15 00 et non 15:00
Merci
Bonjour,
Avec un contrôle Masked Edit.
Bonjour :
Inspires-toi de celà, que j'ai écrit il y longtemps, pour des saisies contrôlées de dates :
Au passage : cela devrait être utile à beaucoup d'autres... ESSAYEZ !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 Private Sub CHOIXSEP_Click(Index As Integer) 'on mémorise le séparateur choisi dans la propriété tag de DATESAISIE If Index = 1 Then DATESAISIE.Tag = "/" If Index = 2 Then DATESAISIE.Tag = "-" If Index = 3 Then DATESAISIE.Tag = " " End Sub Private Sub DATESAISIE_KeyPress(KeyAscii As Integer) 'remarquez que j'évite d'utiliser les sendkeys, plus faciles mais souvent générateurs, sous VB, d'une 'modification aléatoire de l'état du clavier (on perd fréquemment l'état "pavé numérique habilité") sep$ = DATESAISIE.Tag ' on a mémorisé dans la propriété tag lors du choix du séparateur If sep$ = "" Then sep$ = "/" DS = DATESAISIE.Text: chkey = Chr(KeyAscii): ou = DATESAISIE.SelStart + 1 If KeyAscii = 8 Then 'il faut permettre les effacements arrières If Right$(DS, 1) = sep$ Then 'si le caractère avant est le séparateur, il faut reculer d'un rang de plus DATESAISIE.Text = Left$(DS, ou - 3): KeyAscii = 0: DATESAISIE.SelStart = ou - 3 End If Exit Sub End If If CHOIXTYPDATE(3).Value = False Then '(on est donc dans le cas d'un format jj/mm/aaaa ou mm/jj/aaaa) If (ou = 3 Or ou = 6) And chkey <> sep$ Then Beep: KeyAscii = Asc(sep$): Exit Sub If ou > 10 Then Beep: KeyAscii = 0: Exit Sub 'la date ne saurait comporter plus de 10 caractères ! ' on s'assure de rester en format jj/mm/aaaa car mm/jj/aaaa est lui aussi reconnu comme date valide If CHOIXTYPDATE(1).Value = True Then If ou = 1 And Val(chkey) > 3 Then Beep: KeyAscii = 0: Exit Sub If ou = 4 And Val(chkey) > 1 Then Beep: KeyAscii = 0: Exit Sub If ou = 5 And Val(Right$(DS, 1) & chkey) > 12 Then Beep: KeyAscii = 0: Exit Sub Else If ou = 4 And Val(chkey) > 3 Then Beep: KeyAscii = 0: Exit Sub If ou = 1 And Val(chkey) > 1 Then Beep: KeyAscii = 0: Exit Sub If ou = 2 And Val(Right$(DS, 1) & chkey) > 12 Then Beep: KeyAscii = 0: Exit Sub End If 'on va maintenant devoir s'assurer qu'une comparaison se fait toujours avec une année bissextile 'pour permettre, jusqu'au 9ème caractère, un 29 février. le 10ème caractère est filtré par lui-même If ou <= 8 Then 'les dates de références ci-dessous ne sont pas choisies au hasard (construites de telle 'façon que les concaténations qui suivent sont toujours "opérationnelles") 'If CHOIXTYPDATE(1).Value = True Then dtcomp$ = "01/01/0096" Else dtcomp$ = "11/10/0096" If CHOIXTYPDATE(1).Value = True Then dtcomp$ = "01/01/0096" Else If chkey = "3" Then dtcomp$ = "11/00/0096" Else dtcomp$ = "11/01/0096" End If Else If Val(chkey) Mod 2 = 0 Then milesime$ = "4" Else milesime$ = "2" If CHOIXTYPDATE(1).Value = True Then dtcomp$ = "01/01/00" & chkey & milesime$ Else dtcomp$ = "11/10/00" & chkey & milesime$ End If End If If IsDate(Left$(DS, ou - 1) & chkey & Mid$(dtcomp$, ou + 1)) = False Then Beep: KeyAscii = 0: Exit Sub If ou = 2 Or ou = 5 Then 'on ajoute un séparateur après le 2ème et après le 5ème caractère DATESAISIE.Text = DS & chkey & sep$: DATESAISIE.SelStart = Len(DATESAISIE.Text): KeyAscii = 0 End If Else '(on est alors dans le cas d'un format aaaa/mm/jj) 'TOUT EST ALORS BEAUCOUP MOINS COMPLEXE A TRAITER If (ou = 5 Or ou = 8) And chkey <> sep$ Then Beep: KeyAscii = Asc(sep$): Exit Sub If ou > 10 Then Beep: KeyAscii = 0: Exit Sub 'la date ne saurait comporter plus de 10 caractères ! If ou <= 8 Then 'voir mes commentaires plus haut sur le choix des dates de référence dtcomp$ = "0001/01/01" Else If chkey = "0" Then dtcomp$ = "0001/01/01" Else dtcomp$ = "0001/01/10" End If If IsDate(Left$(DS, ou - 1) & chkey & Mid$(dtcomp$, ou + 1)) = False Then Beep: KeyAscii = 0: Exit Sub If ou = 4 Or ou = 7 Then 'on ajoute un séparateur après le 4ème et après le 7ème caractère DATESAISIE.Text = DS & chkey & sep$: DATESAISIE.SelStart = Len(DATESAISIE.Text): KeyAscii = 0 End If End If 'on complète par un contrôle de longueur (10) au lostfocus - voir ci-après End Sub Private Sub DATESAISIE_LostFocus() 'on ne permet de quitter ce champ que si la saisie est complète ou nulle If Len(DATESAISIE.Text) < 10 And DATESAISIE.Text <> "" Then Beep: DATESAISIE.SetFocus End Sub
Cocher Microsoft Windows Common Controls-2 6.0
et utiliser un DTPicker, c'est fait pour ca, c'est joli et ca evite les plantages dans les formats
Vous vous posez une question, la réponse est peut-être ici :
Toutes les FAQs VB
Les Cours et Tutoriels VB6/VBScript
Les Sources VB6
Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension
Bonjour Thierry.
Essayes quand même ce que j'ai écrit et vois :
1) si tu as besoin d'utiliser tes flêches
2) si tu peux saisir une date incohérente (et quand l'outil t'arrêtes... pas à la fin ...)
Essayes par exemple, de saisir 31/02 et vois...
Que d'autres essayent...
salut,
c'est pas terrible, mais j'ai fait ça avec le MaskEdit.
je pose le controle MaskEdit sur la feuille
dans la propriété Dataformat, je clique dessus et elle m'ouvre une fenetre dans laquelle je choisis l'heure et son format (15:00), je clique sur Appliquer
dans la propriété Mask, je mets ##:##
et le tour est joué.
A Thierry AIM,
je croyais que le DTPicker était seulement pour les dates :
Patience et longueur de temps font plus que force, ni que rage.
Mon site: http://www.emiage.infopluseco.net
Mon blog: http://azojeca07.wordpress.com
0Non, on peut agir sur la propriété Format de dtpicker.
Je viens de l'essayer.
Mais, Thierry, DTPicker a des réactions bien lentes à mon goût... et ne te libère pas de l'utilisation des flêches pour "voyager", tant dans l'heure que dans la date....
Merci, je viens de l'essayer aussi.Envoyé par jmfmarques
j'arrive pourtant à y faire des saisies, donc en libérant des flèches.Envoyé par jmfmarques
Patience et longueur de temps font plus que force, ni que rage.
Mon site: http://www.emiage.infopluseco.net
Mon blog: http://azojeca07.wordpress.com
Salut
Tu peux aussi utiliser le DateTime Picker. Tu le trouveras parmi les composants à ajouter dans ton projet (Projet > Composants).
Edit: J'aurais du tout lire. J'aurais pu voir ainsi que ça avait déjà été proposé...
- Pour les nouveaux : Mode d'emploi et aide aux nouveaux
- et impérativement les règles du forum. Histoire de garder une ambiance amicale.
- Noubliez pas les balises de Code pour vos listings : bouton # de l'éditeur. Et n'oubliez pas non plus de bouton
- Cours Excel - FAQ Excel - Forum Excel - Cours VBA - Cours complet VBA Excel
zaza, tu devrais reprendre un café, ou passer sous la douche pour finir de te reveillerEnvoyé par zazaraignée
Vous vous posez une question, la réponse est peut-être ici :
Toutes les FAQs VB
Les Cours et Tutoriels VB6/VBScript
Les Sources VB6
Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension
Salut Thierry
J'allais justement me refaire un café. À ta santé!Envoyé par Thierry AIM
- Pour les nouveaux : Mode d'emploi et aide aux nouveaux
- et impérativement les règles du forum. Histoire de garder une ambiance amicale.
- Noubliez pas les balises de Code pour vos listings : bouton # de l'éditeur. Et n'oubliez pas non plus de bouton
- Cours Excel - FAQ Excel - Forum Excel - Cours VBA - Cours complet VBA Excel
Bonsoir,
Si tu veux absomument utiliser un TextBox,
jpleroisse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Private Sub Text1_Change() 'exemple pour format xx:xx Dim Valeur As Byte Text1.MaxLength = 5 'nb caracteres maxi dans textbox Text1.SelStart = 5 Valeur = Len(Text1) If Valeur = 2 Or Valeur = 5 Then Text1 = Text1 & ":" End Sub Private Sub Text1_LostFocus() If Not IsDate(Text1.Text) Then MsgBox "Format incorrect" Text1 = "" Text1.SetFocus Exit Sub Else MsgBox "Format correct" '...la suite de la procedure End If End Sub
Bonjour,
Pour jmfmarques,
Dans ton code tu a CHOIXTYPDATE c'est quoi un tableau ou des boutons option.
Merci, Fikou
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager