Format heure minute pour texbox

Résolu
pirateman46 Messages postés 13 Date d'inscription vendredi 13 novembre 2009 Statut Membre Dernière intervention 24 décembre 2009 - 14 déc. 2009 à 18:02
pirateman46 Messages postés 13 Date d'inscription vendredi 13 novembre 2009 Statut Membre Dernière intervention 24 décembre 2009 - 24 déc. 2009 à 08:18
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
14 déc. 2009 à 18:10
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.
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
15 déc. 2009 à 08:51
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.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 déc. 2009 à 20:55
utilises FormatDateTime pas Format tout court


Renfield - Admin CodeS-SourceS - MVP Visual Basic
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
14 déc. 2009 à 21:08
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.

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
15 déc. 2009 à 06:44
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
pirateman46 Messages postés 13 Date d'inscription vendredi 13 novembre 2009 Statut Membre Dernière intervention 24 décembre 2009
15 déc. 2009 à 08:45
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
pirateman46 Messages postés 13 Date d'inscription vendredi 13 novembre 2009 Statut Membre Dernière intervention 24 décembre 2009
15 déc. 2009 à 09:23
merci de ces précisions je teste ça dés que je reprends le boulot


Pirateman
pirateman46 Messages postés 13 Date d'inscription vendredi 13 novembre 2009 Statut Membre Dernière intervention 24 décembre 2009
24 déc. 2009 à 08:18
9a marche nikel un grand merci a toi pour cette soluce qui m'as bien aidé


Pirateman
Rejoignez-nous