IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB]Formatter une textbox pour saisir des heures


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Points : 52
    Points
    52
    Par défaut [VB]Formatter une textbox pour saisir des heures
    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

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Avec un contrôle Masked Edit.

  3. #3
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Bonjour :

    Inspires-toi de celà, que j'ai écrit il y longtemps, pour des saisies contrôlées de dates :

    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
    Au passage : cela devrait être utile à beaucoup d'autres... ESSAYEZ !


  4. #4
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    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

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    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...


  6. #6
    Membre régulier Avatar de blaiso
    Profil pro
    Banquier
    Inscrit en
    Décembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Banquier

    Informations forums :
    Inscription : Décembre 2005
    Messages : 97
    Points : 104
    Points
    104
    Par défaut
    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

  7. #7
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    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....


  8. #8
    Membre régulier Avatar de blaiso
    Profil pro
    Banquier
    Inscrit en
    Décembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Banquier

    Informations forums :
    Inscription : Décembre 2005
    Messages : 97
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par jmfmarques
    0Non, on peut agir sur la propriété Format de dtpicker.

    Je viens de l'essayer.
    Merci, je viens de l'essayer aussi.

    Citation Envoyé par jmfmarques
    et ne te libère pas de l'utilisation des flêches pour "voyager", tant dans l'heure que dans la date....
    j'arrive pourtant à y faire des saisies, donc en libérant des flèches.
    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

  9. #9
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    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é...

  10. #10
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par zazaraignée
    Salut

    Tu peux aussi utiliser le DateTime Picker. Tu le trouveras parmi les composants à ajouter dans ton projet (Projet > Composants).
    zaza, tu devrais reprendre un café, ou passer sous la douche pour finir de te reveiller
    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

  11. #11
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut Thierry

    Citation Envoyé par Thierry AIM
    zaza, tu devrais reprendre un café, ou passer sous la douche pour finir de te reveiller
    J'allais justement me refaire un café. À ta santé!

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonsoir,
    Si tu veux absomument utiliser un TextBox,
    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
    jpleroisse

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 311
    Points : 96
    Points
    96
    Par défaut
    Bonjour,

    Pour jmfmarques,
    Dans ton code tu a CHOIXTYPDATE c'est quoi un tableau ou des boutons option.

    Merci, Fikou

Discussions similaires

  1. Faire une boucle pour sommer des textbox
    Par crocket51 dans le forum VB.NET
    Réponses: 6
    Dernier message: 25/02/2013, 23h41
  2. Formule pour ajouter des heures a une date
    Par discogarden dans le forum Excel
    Réponses: 2
    Dernier message: 05/03/2009, 07h45
  3. utiliser des morceaux d'une image pour faire des boutons
    Par Battosaiii dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 14/12/2005, 00h05
  4. Une unité pour gérer des très grands nombres
    Par M.Dlb dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2003, 12h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo