Microsoft 365 Calcul montant

GClaire

XLDnaute Occasionnel
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 :

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
 

Pièces jointes

  • Reglement tout le monde v01.xlsm
    261.7 KB · Affichages: 8

GClaire

XLDnaute Occasionnel
Cc ChiTi160, le fofo

Merci.
J’ai un peu regardé hier soir, un peu perdu à vrai dire.

Ne te donne pas trop de travail, car la partie, création, modification et suppression fonctionne.

c’est juste la partie calcul qui est très chaotique, lol.

En partant du fichier post #14, cela devrait rouler.

un truc à savoir, j’ai dédoublé certains controls (Creation et modification avec des textBox) et consultation labels, pas très orthodoxe, mais je ne voulais pas en mode consultation que l’on saisissent des données dans les controls

merci, G’Claire.
 

ChTi160

XLDnaute Barbatruc
Bonjour Jacques
Bonjour le Fil,le Forum
Bon si c'est ok #14
Regarde seulement ce que j'ai fait pour les calculs .
J'avais supprimé les doubles contrôles ,mais bon lol
Tu regardes et tu fais ce que tu veux avec ce que j'ai pu améliorer qui fait avancer le schimilimblick lol
Bonne journée
Jean marie
 

GClaire

XLDnaute Occasionnel
Chtie160, e fofo.

Je regarderai plus en détai en rentrant ce soir, car hier et ce matin la tete ans le C.., lol.

Pour le taux, c'est pas un pourcentage, mais un taux horaire, donc je pense qu'il est préférable de le renseigné a la main, plustot qu'en dur dans le code, plus souple non?

Merci
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re
Pour le taux ,ça dépend s'il y a beaucoup de taux applicables différents !
J'ai créé (pour l'exemple)un array qui contient 5.10.15.20.25
Mais bon ça permettait de rentrer le taux de la personne a l'enregistrement de collaborateur.
Bonne journée
Jean marie
 

GClaire

XLDnaute Occasionnel
Re,merci pour la réponse.

Re
Pour le taux ,ça dépend s'il y a beaucoup de taux applicables différents !
J'ai créé (pour l'exemple)un array qui contient 5.10.15.20.25
Mais bon ça permettait de rentrer le taux de la personne a l'enregistrement de collaborateur.
Bonne journée
Jean marie

Oui il peut y avoir autant de taux que de personnes, lol.

Je regarde les calculs

Merci, G'Claire
 

GClaire

XLDnaute Occasionnel
Jean Marie.

Heu moi aussi, sinon ils vont faire faillite.

J'ai regardé les calculs.

Niveau des heures cela calcule bien, mais a limite je préfère le résultat, comme ceci en centième d'heure :

08:30 à 12:00 = 3.5, je pense que pour la suite des calculs, c'est peut être plus simple, non?

Pour le tarif de la prestation, chez moi cela ne calcule pas, mais peut être pas fini, hihihi.

Merci, beaucoup.

G'Claire
 

Discussions similaires

Réponses
3
Affichages
146
Haut Bas