XL 2019 textbox au format heure

Yann71

XLDnaute Occasionnel
Bonjour la com.
J'ai un petit soucis ( pour changer ). J'ai parcouru le forum de long en large mais je n'ai pas trouvé de solution. J'ai une BDD incrémentée avec un USER. Dans une textbox je souhaite rentrer une heure pas besoin que ma textbox sois au format heure, mais juste que cela s'affiche au format heure dans ma BDD.
J'ai bien essayer avec ce code que j'ai ajouter dans un Module mais voila ça bog:

Private Sub UserForm_Initialize()

Userform2.txtHeureMatin.Value = Format(0, "00:00")
End Sub

J'imagine que ce n'est pas des plus compliqué sauf pour moi. Merci d'avance de votre aide.
 

Pièces jointes

  • REPAS-TEST1.xlsm
    179.9 KB · Affichages: 19

Dranreb

XLDnaute Barbatruc
Bonjour.
Une Sub Sub UserForm_Initialize ne se met pas dans un module standard mais dans le module de l'UserForm concerné, ici UserForm2, et on peut y mettre Me.txtHeureMatin = "00:00"
pas besoin que ma textbox sois au format heure
Seules les cellules ont un format d'affichage de leur valeur. La vraie question c'est qu'est-ce que vous voulez pouvoir saisir comme texte dans votre TextBox qui soit à convertir en jour pour l'affecter comme valeur d'une cellule portant un format d'heure.
VB:
Function HeureTxt(ByVal Txt As String) As Date
   If InStr(Txt, ":") Then HeureTxt = CDate(Txt) Else HeureTxt = CDbl(Txt) / 24
   End Function
 
Dernière édition:

cp4

XLDnaute Barbatruc
Bonjour tout le monde :),

Occupé à te rechercher une solution. J'ai fini par trouver un code que tu trouveras dans un module standard, son nom est significatif.
Cependant, j'ai dû retoucher ton userform car il était trop grand pour mon 14".
J'espère que tu seras satisfait.

Edit:
@jmfmarques : Tu n'ouvres jamais de fichiers, ouvre-nous un peu de tes archives :)
Le code que j'ai trouvé sur dvp dans un snippet posté par unparia. Tu en es peut-être l'auteur:cool:.
Trop de modestie.

edit: fichier remplacé voir post
 
Dernière édition:

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @cp4 , le Fil

Dans ta solution, si la TextBox txtHeureGoûter est vide...... Boum !


1589447453815.png


Tu devrais tester avant si la TextBox est Vide....

@+Thierry

EDIT et dans la foulée si "IsDate" aussi ... (Comme disait Jmfmarques #3)
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Révision de ma function pour qu'elle ne plante plus avec un texte vide :
VB:
Function HeureTxt(ByVal Txt As String)
   On Error Resume Next
   If InStr(Txt, ":") Then HeureTxt = CDate(Txt) Else HeureTxt = CDbl(Txt) / 24
   If Err Then HeureTxt = Empty
   End Function
Vous permet d'écrire f.Cells(ligneEnreg, 3) = HeureTxt(Me.txtHeureMatin.Text)
 

ChTi160

XLDnaute Barbatruc
Bonjour Yann
Bonjour le Fil ,le Forum
Histoire de Saluer deux grands de ce Forum @+Thierry et Dranreb !

Yann tu n'as pas une plage horaire pour ces différentes prestations du Matin et du Goûter
si OUI ne peux tu mettre des ComboBox à la place des TextBox avec les Heures de chaque plage Horaires ?

Jean marie
 

cp4

XLDnaute Barbatruc
Bonjour @cp4 , le Fil

Dans ta solution, si la TextBox txtHeureGoûter est vide...... Boum !


Regarde la pièce jointe 1067069

Tu devrais tester avant si la TextBox est Vide....

@+Thierry

EDIT et dans la foulée si "IsDate" aussi ... (Comme disait Jmfmarques #3)
EDIT et dans la foulée si "IsDate" aussi ... (Comme disait Jmfmarques #3)
C'est déjà inclus dans la fonction. Pourquoi donc, faire une seconde si "IsDate"

VB:
Option Explicit

Public Function sais_heure(T As MSForms.TextBox, w) As String
'--merci de laisser ces 2 lignes de commentaires si vous utilisez ce mécanisme--
'-- l'auteur de cette fonction est Jacques Marquès------------------------------
   Dim z As String, kk As String
   kk = IIf(Len(w) = 3, Left(w, 1), "")
   sais_heure = T.Text
   If Len(sais_heure) = 2 Then sais_heure = IIf(kk = "", sais_heure & ":", kk)
   z = sais_heure & Mid("00:00", Len(sais_heure) + 1)
   If Not z Like "##:##" Or Not IsDate(z) Then sais_heure = w: Exit Function
   w = sais_heure
End Function
 

Yann71

XLDnaute Occasionnel
Bonjour la com, bonjour le fil, vous êtes génial je vous remercie pour vos remarques et votre aide. Vous m'avez beaucoup aidé et je me souviendrai des conseils et de vos remarques constructives.
Belle journée à vous
 

Yann71

XLDnaute Occasionnel
Bonjour Yann
Bonjour le Fil ,le Forum
Histoire de Saluer deux grands de ce Forum @+Thierry et Dranreb !

Yann tu n'as pas une plage horaire pour ces différentes prestations du Matin et du Goûter
si OUI ne peux tu mettre des ComboBox à la place des TextBox avec les Heures de chaque plage Horaires ?

Jean marie
Bonjour Jean-Marie toujours autant disponible et sympathique. Si il pourrait y avoir une plage horaire pour le MATIN et le GOUTER mais si des ComboBox devraient remplacer les TextBox cela demanderai une liste assez importante: de 11h à 12h30 par palier de 5 minute pour le matin et le goûter 14h à 15h30 aussi par palier de 5 minutes. Mais en sois l'idée est bonne.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Qu'importe la taille de la liste ?
Dans son utilisation correcte, une ComboBox c'est fait pour y taper quelque chose. Le bouton flèche pour consulter la liste c'est exceptionnel, quand on n'a plus envie de taper le reste, où qu'on ne se souvient plus de ce qui existe.
 

Discussions similaires

Statistiques des forums

Discussions
312 201
Messages
2 086 164
Membres
103 149
dernier inscrit
Deepkneec