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: 25

ChTi160

XLDnaute Barbatruc
Re
tu dis
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.

Pourquoi ne pas mettre ce taux dans la feuille "Collaborateurs" à la suite du Nom Prénom et de le récupérer dans le Combobox et ensuite l'utiliser selon le choix du Collaborateur !
Enfin une idée comme une autre
là, je pars bricoler chez ma fille je regarde ce soir ou tu en es !
bonne journée
jean marie
 

GClaire

XLDnaute Occasionnel
Hello ChTi160, le forum.

Merci.

je vois qu'il n'y a pas de vacances pour les Autos Lol

Et non, j'ai eu la chance de prendre même un nouveau client, et heureusement, ca le spectacle et l'évènementielle, is DEAD.

Pourquoi ne pas mettre ce taux dans la feuille "Collaborateurs" à la suite du Nom Prénom et de le récupérer dans le Combobox et ensuite l'utiliser selon le choix du Collaborateur !
Enfin une idée comme une autre


Oui une très bonne idée.

J'avais fais cela pour tout rassembler au même endroit niveau calcul.

Si je passe comme cela, je modifierai l'Userform collaborateur.

J'ai essaye noir de possibilité, mais calcul ne fonctionnait jamais.

Merci, G'Claire
 

GClaire

XLDnaute Occasionnel
Hello

J'arrive presque a mes fins, suite aux bons conseils, de ChTi160.

Ajout du taux dans userform
envoi de ce taux dans feuille "Collaborateurs"

Le résultat est presque la, sauf que je n'ai pas la somme au complet.

Je cherche encore...

Merci, G'Claire
 

Pièces jointes

  • Reglement tout le monde v01.xlsm
    273.5 KB · Affichages: 11

GClaire

XLDnaute Occasionnel
Re.

Bon déception.

Les calculs se fond, mais l'envoi dans la feuille est chaotique, des Heures ou autres données horaires sont a "00:00", et le pire est que c'est aléatoire, jamais les mêmes, des fois deux, des fois une ou 3.

Je ne vois pas ou je bugg.

Je fais un peu le clean et remet un fichier.

Merci G'Claire
 
Dernière édition:

GClaire

XLDnaute Occasionnel
re

Bon a priori cela marchotte, lol.

J'ai voulais mettre dans mon tableau un tableau en faisant "Insertion" puis tableau et cocher "Mon tableau comporte une entête".

De maière a faire des calculs avec plage de cellules dynamiques.

Et bien lors de l'ajout de donnée, la première ligne après les entes n'est pas rempli.

pour la dernière ligne :

DerrLigne = Feuille_Collaborateurs_XXX.Range("C" & Rows.Count).End(xlUp).Row + 1 'Je cherche la dernière ligne de données

Mais pour la première donnée cela fonctionne pas.

a quoi c'est dû?

Merci, G'Claire
 

GClaire

XLDnaute Occasionnel
Hello.

Malgré tous mes essais, je n'arrive pas a mes fin, histoire des format (Car essayé avec code a coté qui fonctionné), ou je ne sais quoi au niveau de l'envoi des données.

Je n'arrive pas a faire la somme de la colonne "O" qui doit se mettre dans le label "Lbl_ResteARegler".

Pour les autres calculs cela a l'air de fonctionner, Total Heure matin, Total heure aprés midi, Total Jour, montant intervention.

Mais pour le reste a régler, c'est ko.

Donc le principe, en sélectionnant le nom de collaborateur, cela choisi sa feuille et liste toutes les intervention et calcul ce "Reste a régler", et j'aimerais que si je rajoute des heures, cela se rajoute également dans ce label en plus du restant du.

Lors de la validation je ne renvois pas cette donnée, c’est plus du visuel.

Merci a vous, G'Claire
 

Pièces jointes

  • Reglement tout le monde v01.xlsm
    288.1 KB · Affichages: 4

GClaire

XLDnaute Occasionnel
Hello

Oui il a bien a soucis lors de l'envois des données en colonne "O", soit dû au calcul ou format ou je ne sais quoi.

Même si je fais une somme dans la dernière cellule en prenant toutes les cellules de dessus, le calcul ne se fait pas, il faut que je double clique sur chaque cellule pour que le calcul se fasse.
Voici le lien sur ma drop box de la video (A pas réussi de faire un giff comme mon trés cher ChTi160, lol :


Merci.

G'Claire
 

GClaire

XLDnaute Occasionnel
Re

Peut être trouvé.

J'ai rajouté cdbl dans mon envoie :


.Range("O" & DerrLigne).Value = CDbl(Montant_Intervention)

Plus qu'a faire en sorte que si je modifie mes heures d'entrées et de sortie, cela modifie aussi ce montant.

Merci, G'Claire
 

Pièces jointes

  • Reglement tout le monde v01.xlsm
    307.4 KB · Affichages: 2
Dernière édition:

ChTi160

XLDnaute Barbatruc
Bonsoir Jacques
Bonsoir le Fil ,le Forum
Un fichier ou j'ai modifié quelques trucs , mais tout n'est pas fait Lol
j'attends ton retour !
Bonne soirée
Amicalement
jean marie
 

Pièces jointes

  • Reglement tout le monde v01 (Chti160).xlsm
    210.5 KB · Affichages: 12

Discussions similaires