VBA format heure supérieur à 24:00

  • Initiateur de la discussion Initiateur de la discussion kisscool67
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

kisscool67

XLDnaute Nouveau
Bonjour à tous,

Tout d'abord je dois dire que je débute dans le vba.

J'essaie de créer un outil pour suivre les heures supplémentaires et complémentaires effectuées pour chaque contrat horaire, Tps partiel et tps plein, via excel vba.

Le but est d'obtenir un tableau récap pour une semaine complète où figure chaque salarié avec chacun leur nombre d'HS.

Chaque salarié pointe lorsqu'il se trouve à l'agence et selon la situation, ils peuvent aussi avoir des missions à l'extérieur. Le problème est donc que leur temps de travail hebdomadaire doit être reconstituer avant de calculer leur HS.

J'ai donc créé un USF où figure plusieurs textbox dans lesquels je saisie la durée des heures pointés et la durée des missions et le total doit s'afficher dans un autre textbox. Le problème est que le cumul de toutes ces heures dépasse forcément les 24:00.

J'ai visité plusieurs forum, site etc mais je n'ai pas trouvé ce que je cherché.

Y a t il un moyen pour que ce textbox affiche un total supérieur à 24:00?

Voici pour l'instant ce que j'ai fait avec l'aide de ce que j'ai pu trouver sur internet.


Private Sub UserForm_Initialize()
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
End Sub


Private Sub CommandButton1_Click()
'calculette horaire total<24h

Dim h1 As Date
Dim h2 As Date
Dim h3 As Date
Dim h4 As Date

h1 = 0
h2 = 0
h3 = 0
h4 = 0

h1 = CDate(TextBox1.Value)
h2 = CDate(TextBox2.Value)
h3 = CDate(TextBox3.Value)
h4 = CDate(TextBox4.Value)

TextBox5.Value = Format(h1 + h2 + h3 + h4, "hh:mm")


Merci d'avance pour vos conseils.

Kisscool67
 
Re : VBA format heure supérieur à 24:00

Bonjour.

Essayez de tirez parti de ces 2 procédures :
VB:
Property Let Heures(ByVal TBx As MSForms.TextBox, ByVal ValCel)
Dim H As Double
H = ValCel * 24 + 0.00001
TBx.Text = Int(H) & ":" & Format(Int((H - Int(H)) * 60), "00")
End Property
Property Get Heures(ByVal TBx As MSForms.TextBox)
Dim T() As String
T = Split(TBx.Text & ":", ":")
Heures = (T(0) + T(1) / 60) / 24
End Property
VB:
Heures(Me.TextBox1) = 1.52083333333333 ': devrait y afficher "36:30"
Et ceci devrait passer aussi :
VB:
Heures(TextBox5) = Heures(TextBox1) + Heures(TextBox2) + Heures(TextBox3) + Heures(TextBox4)
 
Dernière édition:
Re : VBA format heure supérieur à 24:00

Oui mais avec vous essayé de les appliquer conformément aux 2 exemples ?

Une procédure Property Get est très voisine d'une procédure Function, elle renvoie une valeur.
La différence c'est qu'elle admet un pendant de même nom comme Property Let.
La Property Let ne renvoie pas de valeur, mais doit avoir les mêmes paramètres que la Property Get et un de plus. Celui ci représente une valeur qu'on doit lui spécifier derrière un signe "=" d'affectation.
 
Dernière édition:
Re : VBA format heure supérieur à 24:00

Salut alex973,

J'ai juste copier le code vb proposé par Dranreb et je l'ai collé avant la macro qui en a besoin. Voir ci dessous.

Pour ma part, ca fonctionne bien.

En cas de problème donne plus de détail ou laisse une copie de ton fichier.

A+ alex973

Property Let Heures(ByVal TBx As MSForms.TextBox, ByVal ValCel)
Dim H As Double
H = ValCel * 24 + 0.00001
TBx.Text = Int(H) & ":" & Format(Int((H - Int(H)) * 60), "00")
End Property
Property Get Heures(ByVal TBx As MSForms.TextBox)
Dim T() As String
T = Split(TBx.Text & ":", ":")
Heures = (T(0) + T(1) / 60) / 24
End Property

Private Sub CommandButton1_Click()
'calculette horaire total<24h

Heures(TextBox11) = Heures(TextBox1) + Heures(TextBox2) + Heures(TextBox3) + Heures(TextBox4) + Heures(TextBox5) + Heures(TextBox6) + Heures(TextBox7) + Heures(TextBox8) + Heures(TextBox9) + Heures(TextBox10)

End Sub
 
Re : VBA format heure supérieur à 24:00

Bonsoir à tous

un autre exemple

Code:
Private Sub CommandButton1_Click()
t1 = CDate(TextBox1.Value)
t2 = CDate(TextBox2.Value)
t3 = CDate(TextBox3.Value)
t4 = CDate(TextBox4.Value)
On Error Resume Next
x = t1 + t2 + t3 + t4
Me.TxtHeure = CStr((Int(x) * 24) + DatePart("h", (x))) & ":" & Format(x, "Nn")
End Sub
 
Dernière édition:
Re : VBA format heure supérieur à 24:00

Bonsour®

autre alternative...🙄

VB:
Private Sub CommandButton1_Click()
 'calculette horaire total<24h
 Dim FormatHH As String
       FormatHH = Chr(34) & Chr(91) & "hh" & Chr(93) & ":mm" & Chr(34)
'---- utiliser une cellule inutilisée non protégée ex: IV1
       [IV1]= CDate(TextBox1.Value)+CDate(TextBox2.Value)+ CDate(TextBox3.Value)+ CDate(TextBox4.Value)
       Me.TextBox5.Value = Evaluate("=TEXT(IV1 ," & FormatHH & ")")
       [IV1].Clear
End Sub
 
Re : VBA format heure supérieur à 24:00

Bonsour®
autre alternative sans cellule intermédiaire :
VB:
Private Sub CommandButton1_Click()
Dim hh_5 As Double
hh_5 = CDate(TextBox1.Value)+CDate(TextBox2.Value)+ CDate(TextBox3.Value)+ CDate(TextBox4.Value)
Me.TextBox5.Value = Evaluate("=TEXT(" & Application.Substitute(CStr(hh_5), ",", ".") & " ,""[hh]:mm"")")
End Sub
 
Re : VBA format heure supérieur à 24:00

merci
La derniere solution de Modeste geedee fonctionne tres bien.
Mais j'ai un autre soucis sur la répartition des heures et sur les reports des infos dans des labelbox (erreur qualificateur incorrect).
Qui pourrais à répartir les heures correctement (35 heures normales et si.... 8 heures sup à 25% et le reste a 50%)
A toute fins utiles, ci joint une partie de mon fichier
D'avance merci a tous
Amicalement
Alex973
 

Pièces jointes

Re : VBA format heure supérieur à 24:00

J'oubliais, je n'arrive pas non plus a effectuer un controle cohérence sur les heures saisies. Il faut que l'heure de fin du matin ne soit pas inférieure à celle du début. Idem pour les apres midi.
merci
alex973
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
896
Réponses
7
Affichages
867
Retour