Bonjour le forum,
je travaile actuelle sur une application VBA qui calule des écarts entre deux heures (à l'aide de datediff, timeserial et timevalue). Jusqu'a maintenant je travaillais sur une journée a la fois donc j'utilisais la méthode suivante :
ensuite j'affiche sous excel ma variable tpsEtH. Jusqu'ici tout allait bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 If DateDiff("s", date1, date2) < 32767 Then 'TimeSerial ne peut pas recevoir une valeur superieure a 32767 diff = TimeSerial(0, 0, DateDiff("s", date1, date2)) 'écart en secondes (plus précis mais plus volumineux en chiffres) Else diff = TimeSerial(0, DateDiff("n", date1, date2), 0) 'écart en minutes End If TpsEtH = TimeValue(TpsEtH) + TimeValue(diff)
Maintenant je souhaite faire la meme chose sur un mois, j'ai donc de fortes chances de dépasser un total de 24 h qui engendre donc des erreurs sur les TimeValue...
j'ai vu que sous excel les additions d'heures sont possibles si on utilise le format [hh]:mm:ss, j'ai donc souhaité réutiliser cette méthode :
TpsEtHmemo = Application.WorksheetFunction.Sum(Format(TpsEtHmemo, "[hh]:mm:ss"), Format(TpsEtH, "[hh]:mm:ss"))
mais j'ai alors l'erreur suivante :Impossible de lire la propriété Sum de la classe WorksheetFunction.
pourtant si je fais :
la ca fonctionne mais évidemment il tronque les dates supèrieures a 24h a cause de format...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 TpsEtHmemo = Application.WorksheetFunction.Sum(Format(TpsEtHmemo, "hh:mm:ss"), Format(TpsEtH, "hh:mm:ss")) 'puis un peu plus loin dans le programme .Cells(i, colTpsH) = CDbl(TpsEtHmemo) .Cells(i, colTpsH).NumberFormat = "[hh]:mm:ss;@"
J'espère avoir été assez clair... Pour résumer je récupère des écarts en heures : 01:02:10, que je souhaite additionner meme si le resultat final dépasse 24h : res= 29:35:12
Je fais peut etre fausse route! Est ce que quelqu'un pourrait me donner une piste pour me remettre en selle?
Merci beaucoup
Partager