Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Encore un problème d'heure sous VBA

4 réponses
Avatar
Philou36
Bonjour,

Grace à MichDenis, j'avance mais encore coincé avec le problème suivant :

Je boucle sur mes lignes et je cumule les heures. Je veux avoir un signal si
le total des heures dépasse 25 heures.
VingtCinqHeures = TimeValue("25:00") ne marche pas !
peut on eviter d'avoir 1.04166666666667 pour 25 heures ?
dans le code suivant CompteurHeures1 m'indique 4:30 à la place de 28:30

CompteurHeures = 0
While Cells(Ligne, 1)
HeureDébut = Cells(Ligne, 3)
HeureFin = Cells(Ligne, 4)
If HeureDébut < HeureFin Then CompteurHeures = CompteurHeures + HeureFin -
HeureDébut
JourSemaine = Cells(Ligne, 12)
Ligne = Ligne + 1
Wend
If CompteurHeures > 1.04166666666667 Then
CompteurHeures1 = Format(CompteurHeures, "hh:mm")
Phrase = Phrase & "Dépassement du plafond de 25 heures : " &
CompteurHeures1 & Chr(13)
End If
If Phrase <> "" Then MsgBox Phrase, , "Information"
End Sub

Un grand merci par avance pour votre aide

Philippe

4 réponses

Avatar
Modeste
Bonsour®

"Philou36"
Je boucle sur mes lignes et je cumule les heures. Je veux avoir un signal
si le total des heures dépasse 25 heures.
VingtCinqHeures = TimeValue("25:00") ne marche pas !
peut on eviter d'avoir 1.04166666666667 pour 25 heures ?



VingtCinqHeures = 25/24
Avatar
Calou
On 7 avr, 00:05, "Modeste" wrote:
Bonsour®

"Philou36"

> Je boucle sur mes lignes et je cumule les heures. Je veux avoir un sign al
> si le total des heures dépasse 25 heures.
> VingtCinqHeures = TimeValue("25:00") ne marche pas !
> peut on eviter d'avoir 1.04166666666667 pour 25 heures ?

VingtCinqHeures = 25/24



Bonjour et merci pour ta réponse.
Par contre, comment ferais tu pour mon probleme de mise en forme des
heures pour ma variable CompteurHeures1 qui m'indique 4:30 la place de
28:30 ??

un grand merci par avance.

Bonne journée

Philippe
Avatar
michdenis
Les fonctions existantes en vba pour manouvrer avec les heures
TimeSerial(), TimeValue(), Hour(), Format() s'occupent toutes d'une durée
de moins de 24 heures (23:59:59)

Tu pourrais toujours additionner des heures et utiliser
une variable de type "String" et créer une chaîne de caractère en
utilisant la concaténation pour contenir le résultat. Cependant, tu
ferais face à un problème majeur...comment utiliser cette variable
pour effectuer des calculs ou transférer ce résultat vers une feuille
de calcul sinon faire le travail inverse et transformer cette chaîne
de caractère en une valeur numérique.



"Calou" a écrit dans le message de groupe de discussion
:
On 7 avr, 00:05, "Modeste" wrote:
Bonsour®

"Philou36"

> Je boucle sur mes lignes et je cumule les heures. Je veux avoir un signal
> si le total des heures dépasse 25 heures.
> VingtCinqHeures = TimeValue("25:00") ne marche pas !
> peut on eviter d'avoir 1.04166666666667 pour 25 heures ?

VingtCinqHeures = 25/24



Bonjour et merci pour ta réponse.
Par contre, comment ferais tu pour mon probleme de mise en forme des
heures pour ma variable CompteurHeures1 qui m'indique 4:30 la place de
28:30 ??

un grand merci par avance.

Bonne journée

Philippe
Avatar
Modeste
Bonsour® "Philou36"

Par contre, comment ferais tu pour mon probleme de mise en forme des
heures pour ma variable CompteurHeures1 qui m'indique 4:30 la place de
28:30 ??



selon le cas (type de séparateur décimal) utiliser l'une des deux méthodes
ci-dessous
MsgBox Evaluate("=TEXT(" & Application.Substitute(CompteurHeures1, Chr(44),
Chr(46)) & ",""[h]:mm"")")

MsgBox Evaluate("=TEXT(" & CLng(CompteurHeures1) & ",""[h]:mm"")")