Bonjour la communauté.
J'espère que vous allez bien?
Je suis sur un nouveau fichier pour un ami en auto aussi comme me.
Celui-ci a bien avancé mais je me heurte a un soucis de calcul.
On renseigne les heures d'arrivée et départ et ce le matin et l’après midi.
Cela calcul la plage horaire le matin et l’après midi, ainsi que le total par jour.
Et on souhaiterai, que cela multiplie par la cellule C3, de la feuille du collaborateur concernée.
Malheureusement je n'arrive a rien avec ce dernier calcul.
Je pense en raison des formats.
Voici les codes, que j'utilise.
Donc dans l'UserForm "Gestion_Horaire"
Pour les heures a renseigner :
Le calcul :
Dans un module : "Mdl_HeureToDec"
Si vous avez une idée?
Je vous remercie par avance.
G'Claire
J'espère que vous allez bien?
Je suis sur un nouveau fichier pour un ami en auto aussi comme me.
Celui-ci a bien avancé mais je me heurte a un soucis de calcul.
On renseigne les heures d'arrivée et départ et ce le matin et l’après midi.
Cela calcul la plage horaire le matin et l’après midi, ainsi que le total par jour.
Et on souhaiterai, que cela multiplie par la cellule C3, de la feuille du collaborateur concernée.
Malheureusement je n'arrive a rien avec ce dernier calcul.
Je pense en raison des formats.
Voici les codes, que j'utilise.
Donc dans l'UserForm "Gestion_Horaire"
Pour les heures a renseigner :
VB:
Private Sub TextBox_3_Change()
With Gestion_Horaire
'If Len(.TextBox_3) = 2 Then .TextBox_3.Value = .TextBox_3.Value & ":"
If .TextBox_3.Value = "" Then .TextBox_3.Tag = 1 Else .TextBox_3.Tag = .TextBox_3.Value
If .Lbl_H_Total_Matin.Caption = "" Then .Lbl_H_Total_Matin.Tag = 1 Else .Lbl_H_Total_Matin.Tag = .Lbl_H_Total_Matin.Caption
If .Lbl_H_Total_ApresMidi.Caption = "" Then .Lbl_H_Total_ApresMidi.Tag = 1 Else .Lbl_H_Total_ApresMidi.Tag = .Lbl_H_Total_ApresMidi.Caption
If .Lbl_H_Total_Jour.Caption = "" Then .Lbl_H_Total_Jour.Tag = 1 Else .Lbl_H_Total_Jour.Tag = .Lbl_H_Total_Jour.Caption
Calcul_Temps
End With
End Sub
VB:
Private Sub TextBox_4_Change()
With Gestion_Horaire
'If Len(.TextBox_4) = 2 Then .TextBox_4.Value = .TextBox_4.Value & ":"
If .TextBox_4.Value = "" Then .TextBox_4.Tag = 1 Else .TextBox_4.Tag = .TextBox_4.Value
If .Lbl_H_Total_Matin.Caption = "" Then .Lbl_H_Total_Matin.Tag = 1 Else .Lbl_H_Total_Matin.Tag = .Lbl_H_Total_Matin.Caption
If .Lbl_H_Total_ApresMidi.Caption = "" Then .Lbl_H_Total_ApresMidi.Tag = 1 Else .Lbl_H_Total_ApresMidi.Tag = .Lbl_H_Total_ApresMidi.Caption
If .Lbl_H_Total_Jour.Caption = "" Then .Lbl_H_Total_Jour.Tag = 1 Else .Lbl_H_Total_Jour.Tag = .Lbl_H_Total_Jour.Caption
Calcul_Temps
End With
End Sub
VB:
Private Sub TextBox_5_Change()
With Gestion_Horaire
'If Len(.TextBox_5) = 2 Then .TextBox_5.Value = .TextBox_5.Value & ":"
If .TextBox_5.Value = "" Then .TextBox_5.Tag = 1 Else .TextBox_5.Tag = .TextBox_5.Value
If .Lbl_H_Total_Matin.Caption = "" Then .Lbl_H_Total_Matin.Tag = 1 Else .Lbl_H_Total_Matin.Tag = .Lbl_H_Total_Matin.Caption
If .Lbl_H_Total_ApresMidi.Caption = "" Then .Lbl_H_Total_ApresMidi.Tag = 1 Else .Lbl_H_Total_ApresMidi.Tag = .Lbl_H_Total_ApresMidi.Caption
If .Lbl_H_Total_Jour.Caption = "" Then .Lbl_H_Total_Jour.Tag = 1 Else .Lbl_H_Total_Jour.Tag = .Lbl_H_Total_Jour.Caption
Calcul_Temps
End With
End Sub
VB:
Private Sub TextBox_6_Change()
With Gestion_Horaire
'If Len(.TextBox_6) = 2 Then .TextBox_6.Value = .TextBox_6.Value & ":"
If .TextBox_6.Value = "" Then .TextBox_6.Tag = 1 Else .TextBox_6.Tag = .TextBox_6.Value
If .Lbl_H_Total_Matin.Caption = "" Then .Lbl_H_Total_Matin.Tag = 1 Else .Lbl_H_Total_Matin.Tag = .Lbl_H_Total_Matin.Caption
If .Lbl_H_Total_ApresMidi.Caption = "" Then .Lbl_H_Total_ApresMidi.Tag = 1 Else .Lbl_H_Total_ApresMidi.Tag = .Lbl_H_Total_ApresMidi.Caption
If .Lbl_H_Total_Jour.Caption = "" Then .Lbl_H_Total_Jour.Tag = 1 Else .Lbl_H_Total_Jour.Tag = .Lbl_H_Total_Jour.Caption
Calcul_Temps
End With
End Sub
Le calcul :
Code:
Private Sub Calcul_Temps()
On Error Resume Next
With Gestion_Horaire
.Lbl_H_Total_Matin.Caption = HeureToDec(Format(CDate(.TextBox_4.Tag) - CDate(.TextBox_3.Tag), "hh:mm"))
.Lbl_H_Total_ApresMidi.Caption = HeureToDec(Format(CDate(.TextBox_6.Tag) - CDate(.TextBox_5.Tag), "hh:mm"))
.Lbl_H_Total_Jour.Caption = HeureToDec(Format(CDate(.TextBox_4.Tag) - CDate(.TextBox_3.Tag) + CDate(.TextBox_6.Tag) - CDate(.TextBox_5.Tag), "hh:mm"))
.Lbl_Montant_Intervention.Caption = (HeureToDec(Format(CDate(.TextBox_4.Tag) - CDate(.TextBox_3.Tag) + CDate(.TextBox_6.Tag) - CDate(.TextBox_5.Tag), "hh:mm"))) * Sheets(Nom & " " & Prenom).Range("C3").Value
End With
Dans un module : "Mdl_HeureToDec"
Code:
Public Function HeureToDec(pHeure As Date) As Single
Dim nbHeures As Integer, nbMinutes As Integer, nbSecondes As Single
nbHeures = DatePart("h", pHeure, vbMonday, vbFirstFourDays)
nbMinutes = DatePart("n", pHeure, vbMonday, vbFirstFourDays)
nbSecondes = nbMinutes * 60 + DatePart("s", pHeure, vbMonday, vbFirstFourDays)
nbSecondes = nbSecondes / 3600
HeureToDec = nbHeures + nbSecondes
End Function
Si vous avez une idée?
Je vous remercie par avance.
G'Claire