Format heure dans useform

Résolu/Fermé
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 - 23 nov. 2015 à 17:18
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 - 24 nov. 2015 à 10:30
Bonjour, à tous

En fouillant un peu sur le net ; je suis tombée sur un code qui me permet d'entrer des horaires dans un userform et de renseigner une cellule .

Je bloque au niveau des controles dans le Form,
Je voudrais permettre à l'utilisateur de renseigner n'importe quel chiffre pour définir l'horaire
ex: 723 veut dire 07:23
11 veut dire 11:00 ( c'est déja le cas)
1243 donnera 12:43
je vous joins le fichier

Merci du coup de pouce

http://www.cjoint.com/c/EKxqiN57qtA



A voir également:

5 réponses

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
23 nov. 2015 à 17:39
Bonjour,

Le premier argument de TimeSerial est les heures.
Du coup si tu inverses Left et Right :
tDate = TimeSerial(Left(tString, 2), Right(tString, 2), 0)

859 devient bien 8:59 et non plus 11:08 (qui était interprété avec 59:08=2j 11h 08min)
Mais 7, ça doit devenir 7h ou 0h07.
Avant les codes-barres, les caissières devaient saisir le prix au centime. Si tu te bases sur le même principe, tu lèves toute ambiguïté.
7h00 --> 700
0h07 --> 7 (ou 007)

A+
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
23 nov. 2015 à 17:57
Bonjour,

Essaies :
Private Sub TextBox1_Change()
Dim s As String
   s = Right("0000" & Replace(Me.TextBox1.Value, ":", ""), 4)
   Me.TextBox1.Value = Left(s, 2) & ":" & Right(s, 2)
End Sub

0
via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703
23 nov. 2015 à 18:18
Bonjour Julia,

Laisser la possibilité d'entrer que 3 chiffres à l'utilisateur n'est pas top et peut être source d'erreur, en effet comment interpréter par exemple 124 ? 1 h 24 ou 12 h 40 ou 12 h 04 ???
Soit il faut demander à l'utilisateur (et l'obliger à) rentrer 4 chiffres 0124 ou 1204 et la macro de ton fichier ltransforme cette chaine numérique en heure valide
Soit tu tiens à ta possibilité de 3 chiffres (ou moins) il faut mieux dans ton userform prévoir 2 textbox l'un pour l'heure et l'autre pour les minutes et dans la macro associée au bouton Fermer mettre une instruction heurechoisie=textbox1&":"&textbox2
Et pour eviter une erreur si un des textbox est vide mettre dans le BeforeUpDate de chaque textbox une seule instruction :
Exemple pour le textbox1 :
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Value = "" Then TextBox1.Value = 0
End sub
En fait dans ce cas toutes les instructions relatives au placement de l'heure dans la feuille et de vérification (pour l'instant dans l'AfterUpDate) doivent se trouver dans la macro associée au bouton :
Private Sub CommandButton1_Click()
heurechoisie = TextBox1.Value & ":" & TextBox2.Value
Sheets("horaires").Range("b1") = heurechoisie
If Sheets("horaires").Range("b1").Value > Sheets("horaires").Range("h1").Value Or Sheets("horaires").Range("b1").Value < Sheets("horaires").Range("g1").Value Then
MsgBox "Oops! Veuillez saisir un horaire compris entre 5:00 et 12:00", vbOKOnly, "Unexpected entry"
TextBox1 = ""
TextBox2 = ""
Exit Sub
End If
UserForm1.Hide
End Sub


Cdlmnt
Via
0
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 33
23 nov. 2015 à 18:54
Merci à tous

via55 :
Laisser la possibilité d'entrer que 3 chiffres à l'utilisateur n'est pas top et peut être source d'erreur, en effet comment interpréter par exemple 124 ? 1 h 24 ou 12 h 40 ou 12 h 04 ???
Tes mises en garde sont pertinentes ; je n'avais pas vu sous cet angle.

en inversant le left/right de l'argument TimeSerial comme me l'a préconisé Zoul67, ça fonctionne mais il ya toujours le risque d'erreur car en entrant par exemple 7 il me met 00:07 ou 23 il met 00:23

En fait l'idéal ce serait d'obliger l'utilisateur à rentrer 4 chiffres horaires entre 00h00 et 23h59.

Bien à vous

Nb: Patrice je teste ton code ; merci
0

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

Posez votre question
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 33
24 nov. 2015 à 10:30
Bonjour
Apres plusieurs tests j'opte pour la solution de Zoul qui me parait la plus simple sans pour autant changer intégralement les lignes de code.
Merci à tous
0