Macro pour diviser des heures par des heures

Bonjour,

voila mon problème, je voudrais faire une calculatrice qui fait les additions, soustractions,multiplication d'heure jusqu’à là ça va(à peu près).

maintenant je bloque au niveau des divisions mon problème est simple je veux diviser des heures par des heures.

un exemple avec le format utilisé.

dans une textbox 163:00

dans une autre 8:20

dans une autre le résultat qui doit être 19 jours et 4:40 heures

Je réussi à le faire avec cette formule =ENT(K20/K21)&" jours et "&TEXTE(MOD(K20;K21);"h:mm")&" heures " mais pas en macro

je met mon fichier non finalisé en PJ pour plus de conprehension.

Merci à tous ceux qui me viendront en aides par avance

Je n'ai pas ouvert le fichier, mais je rappelle que :

des heures sont des nombres décimaux tels que 24h = 1 (sous-entendu 1 jour)

Donc on peut diviser des heures par des heures facilement !

124heures.xlsx (10.13 Ko)

Bonsoir,

Dans un premier temps on va faire une petite rectification

163 heures divisé par 8,5 ça ne fait pas 19 jours... (19 jours = 456 heures !)

Pas bien le temps de développer le sujet ce soir, mais de manière générale pour faire des opérations sur des heures il est préférable de travailler sur des heures centésimales.

2:30 h = 2,50 en centésimale

Pour faire les opérations à partir du tableur on multiplie par 24 pour obtenir le résultat en centésimal avec le format adapté.

Pour revenir au format horaire c'est l'opération inverse on divise par 24...

Avec un USF et des TextBox c'est le même cinéma sauf que tu as une conversion de plus à faire vu que tes TextBox contiennent des Strings...

Alors je me suis pas amusé à faire ça avec les TextBox (je n'ai pas le temps ce soir) mais te voilà sur la bonne piste avec le petit classeur joint qui te détaille les calculs (sur feuille).

A+

67gadjet.xlsx (9.72 Ko)

Merci pour vos réponses rapides

galopin01: j'ai mal formuler ma demande,en fait je veux calculer des heures de congé pour l'exemple 163:00 diviser par une journée de travail qui est de 8:20 ce qui fait bien 19 jours et 4:40heures qui est le résultat à afficher

dans mon fichier il est facile d'ajouter( ou soustraire) en faisant:

ajouter:

If OptionButton4 = True Then

Resultat = Heure1 + Heure2 + Minute1 + Minute2

End If

multiplier des heures au format 163:00 avec multiplicateur décimal

Résultat = Heure1 * Heure3 + Heure3 * Minute1

mais dès que je veux diviser des heures avec des heures au format 163:00/8:20

If OptionButton2 = True Then

Resultat = Heure1 / Heure2 divise les heures (il manque le reste de la formule d’où mon besoin d'aide)

End If

bien sur il faut voir la pièce jointe pour mieux comprendre.

merci encore

Essaie :

if OptionButton2 = True Then
    Resultat = (Heure1 + Minute1 / 60) / (Heure2 + Minute2 / 60)
End If

Bonjour,

Merci steelson mais ça ne marche pas. j'ai fait ces calculs simples et voici ce que ça donne.

16:00/2:00=8:00 tout va bien

16:30/2:00=8:00 là c'est clairement pas la bonne réponse, on dirait que ça ne calcul pas les minutes

163:00/8:20=20:22 alors que la réponse attendu est 19 + reste de 4:40

sur la Feuil1 avec des formules ce que je voudrais faire en macro avec des textboxs

Bonjour,

A tester

A+

Bonjour !

Function DeciH#(HEURE)
                          SP = Split(HEURE, ":")
                       DeciH = Val(SP(0)) / 24
If UBound(SP) > 0 Then DeciH = DeciH + Val(SP(1)) * Sgn(SP(0)) / 1440
End Function

Sub Demo()
     DH1# = DeciH(163)
     DH2# = DeciH("8:20")
       J& = Fix(DH1 / DH2)
MsgBox J & " jours et " & Format(DH1 - DH2 * J, "h:mm") & " heures"
End Sub

Bonjour,

Merci à tous pour vos réponses !

pour Marc L: merci pour ce petit cour je vais tester, j'avoue ne pas bien maitriser les syntaxes et là .....ben c'est du chinois pour l'instant.

pour Frangy: Alors là "chapeau bas" c'est exactement ce que je veux, tu as pris le temps de mettre en forme en plus.

Je ne suis pas assez "calé" pour pouvoir faire ça, c'est une bonne base de réflexion pour plus tard.

je considère ce post clos , merci encore et vive Excel !

Bonjour,

j'ai modifié la ligne n°4 de ma fonction DeciH dans mon précédent message pour jouer aussi avec les heures négatives :

Function AddTime$(ParamArray PA())
     For Each T In PA:  D# = D# + DeciH(T):  Next
     AddTime = 24 * Fix(D) + Hour(D) & ":" & Format$(Minute(D), "00")
End Function

Sub DemoAddTime()
MsgBox AddTime("1:30", "-5:45", "20:50")
End Sub
Rechercher des sujets similaires à "macro diviser heures"