Format heure minute pour texbox [Résolu]

Signaler
Messages postés
13
Date d'inscription
vendredi 13 novembre 2009
Statut
Membre
Dernière intervention
24 décembre 2009
-
Messages postés
13
Date d'inscription
vendredi 13 novembre 2009
Statut
Membre
Dernière intervention
24 décembre 2009
-
Bonjour, j'ai créer un userform a l'interrieur il y a une textbox ou je voudrais qu'en tapant "1045" il m'affiche "10:45" en vu de le récupérer en format heure:minute
je n'ai pas trouvé d'info sur l'aide vba, je pense qu'il doit faloir declarer la variable,mais comment
pour info la textbox n'as pas éter renomer et s'appelle textbox10
si vous avez une soluce ou besoin de plus d'expliquation ?
merci d'avance



Pirateman

8 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Bonjour,

il te faut faire la chose à la sortie de la textbox et en profiter, du même coup, pour contrôler la cohérence de la saisie.
Ainsi


Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
  If IsNumeric(TextBox1.Text) Then
    TextBox1.Text = Format(TextBox1.Text, "0#:##")
  End If
  If Not IsDate(TextBox1.Text) Then
    MsgBox "heure ioncohérente"
    Cancel = True
  End If
End Sub



____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
est ce que tu veut dire que je clique sur ma textbox (ce qui vas m'afficher textbox change()")et que je remplace par ton code.

Non : cela veut dire que lorsque ta textbox perd le focus pour une raison quelconque (souris ou clavier pour passer à autre choise) : l'évènement BeforeUpdate se déclenche automatiquement, et donc le copntrôle de saisie (qui inclut le formatage, qui se fait alors automatiquement dans la textbox si heure cohérente). Si heure incohérente (après formatage, donc) ===>>> message d'alerte et retour à la textbox.
Mais le mieux est que tu mettes en oeuvre et que tu rehgardes ce qui se passe .. ==>> tu comprendras alors ...

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
utilises FormatDateTime pas Format tout court


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Bonjour, renfield,

J'ai personnellement du mal à comprendre comment utiliser FormatDatTime pour formater une saisie sur 4 chiffres (ex 1145) pour la transformer en heure hh:mm (ex 11:45).
Tu peux m'expliquer comment (je n'y parviens pas).

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
ce genre de chose:

Dim sBuffer As String
Dim dTime As Date
sBuffer = Format$(845, "0000")
dTime = TimeSerial(Left$(sBuffer, 2), Right$(sBuffer, 2), 0)
MsgBox FormatDateTime(dTime, vbShortTime)


ce que je n'aime pas, c'est d'imposer hh:nn
non ... faut apprendre à respecter les regional settings, ne pas induire l'user en erreur, en général...

imagine l'inverse:
un soft te donne une échéance, et affiche 08:45 pm
te faudra peut etre un quart de seconde pour convertir en 20h45
mais tout le monde ne connais pas forcement la distinction am / pm

c'est encore plus vrai pour les dates dd/mm/yyyy mm/dd/yyyy ...

on utilise donc TimeSerial, DateSerial, DatePart (et dérivés) et FormatDateTime.


pas convaincu ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
13
Date d'inscription
vendredi 13 novembre 2009
Statut
Membre
Dernière intervention
24 décembre 2009

Je vais essayé la soluce de ucfoutu qui me semble la plus simple, par contre je ne pige pas quand tu me dis "a la sortie de la textbox"
est ce que tu veut dire que je clique sur ma textbox (ce qui vas m'afficher textbox change()")et que je remplace par ton code.
merci, je suis un peu novice en VBA.


Pirateman
Messages postés
13
Date d'inscription
vendredi 13 novembre 2009
Statut
Membre
Dernière intervention
24 décembre 2009

merci de ces précisions je teste ça dés que je reprends le boulot


Pirateman
Messages postés
13
Date d'inscription
vendredi 13 novembre 2009
Statut
Membre
Dernière intervention
24 décembre 2009

9a marche nikel un grand merci a toi pour cette soluce qui m'as bien aidé


Pirateman