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
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
A voir également:
- Format heure dans useform
- Telecharger format factory - Télécharger - Conversion & Codecs
- Format epub - Guide
- Format apfs - Guide
- Hp format tool - Télécharger - Stockage
- Format odt - Guide
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
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+
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+
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
23 nov. 2015 à 17:57
Bonjour,
Essaies :
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
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
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 :
Cdlmnt
Via
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
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
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
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
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
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
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