Format

cs_hustler Messages postés 85 Date d'inscription mercredi 17 septembre 2003 Statut Membre Dernière intervention 20 mars 2012 - 7 nov. 2007 à 10:07
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 7 nov. 2007 à 17:43
Bonjour,

désolé de poser une question aussi nule mais je trouve pas la réponse

comment dois-je faire pour avoir un format d'heure qui autorise le depassement de 23:59:59
pour le moment je fais une somme d'heures et au lieu de m'afficher

26:00:00 il m'affiche 02:00:00

actuellement j'utilise format (mon heure, "hh:mm:ss")

merci d'avance pour votre aide

17 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
7 nov. 2007 à 10:10
Salut,
Et quel est l'intérêt de se retrouver avec une heure 26:00:00 ???

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_hustler Messages postés 85 Date d'inscription mercredi 17 septembre 2003 Statut Membre Dernière intervention 20 mars 2012
7 nov. 2007 à 10:26
ben je fais un calcul sur les heures et je veux savoir combien de temps une personne a travaillé sur 2 jours

donc voila
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
7 nov. 2007 à 10:31
Re,

Lorsque tu utilise format de quel type est la variable "mon heure"

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_hustler Messages postés 85 Date d'inscription mercredi 17 septembre 2003 Statut Membre Dernière intervention 20 mars 2012
7 nov. 2007 à 10:43
c'est une variable que je n'ai pas definie
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
7 nov. 2007 à 11:04
Ce que tu gères, ce ne sont pas des heures, mais des durées ! Tu ne dois pas utiliser le format Date mais un format numérique, comme un Long ou un Double si tu veux gérer les décimales d'heure
0
cs_hustler Messages postés 85 Date d'inscription mercredi 17 septembre 2003 Statut Membre Dernière intervention 20 mars 2012
7 nov. 2007 à 11:19
j'ai essayé de mettre du long mais je perd mon format hh:mm:ss
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
7 nov. 2007 à 11:52
essaye avec le format "hhh:mm:ss" peut-etre

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
cs_hustler Messages postés 85 Date d'inscription mercredi 17 septembre 2003 Statut Membre Dernière intervention 20 mars 2012
7 nov. 2007 à 11:58
j'ai essayé mais il aime pas trop
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
7 nov. 2007 à 12:20
le format hh:mm:ss ne te sert que lors de l'affichage de ta donnée. il n'est pas tres compliqué de convertir un double en hh:mm:ss.
Travaille avec un double en interne et fait toi une petite function de conversion de double vers string au format hh:mm:ss.
Si ton double représente des minutes, ca fera un truc du genre :

Private Function mm10Tohhmmss(ByVal mm10 As Double) As String
Dim H As Long, M As Long, S As Long

H = mm10 \ 60
If mm10 >60 Then M mm10 Mod 60 Else M = Fix(mm10)
S = Fix((mm10 - Fix(mm10)) * 60)
mm10Tohhmmss = Format(H, "00") & ":" & Format(M, "00") & ":" & Format(S, "00")
End Function
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
7 nov. 2007 à 12:23
Petite correction ...
H = Fix(mm10 / 60)

au lieu de simplement
H = mm10 \ 60
car sinon, l'arrondi nous bernera parfois
0
cs_hustler Messages postés 85 Date d'inscription mercredi 17 septembre 2003 Statut Membre Dernière intervention 20 mars 2012
7 nov. 2007 à 14:04
je voudrais pas abuser mais comment je dois faire pour calculerun ecart entre deux horaires

par exemple un gars termine son travail à 20h00 et reprend le lendemain à 8h

il faudrait que je trouve 12hr

lorsque je fais un calcul du genre ((24:00:00-20:00:00) + 08:00:00)
j'ai un probleme dans le format
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 nov. 2007 à 14:16
salut,

fais-toi des TYPE, genre

private type MyTime
tH as integer
tM
as integer
tS
as integer
end type



et ensuite tu fais tes fonctions selon tes besoins avec ces variables typées en argument
++

<hr size="2" width="100%" />
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
cs_hustler Messages postés 85 Date d'inscription mercredi 17 septembre 2003 Statut Membre Dernière intervention 20 mars 2012
7 nov. 2007 à 16:03
merci pourta reponse mais tu aurais pas un exemple stp
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
7 nov. 2007 à 16:16
ou sans faire un type spécifique et en gardant la notion de double qui stocke des minutes.
Il te faut une petite fonction (inverse de ma 1ere) qui passe une string au format hh:mm:ss en double :

' Parametre de la forme "hh:mm:ss"
Function hhmmssTomm10(byval hhmmss As String) As Double
hhmmssTomm10 = (cdbl(left$(hhmmss,2)) * 60) + cdbl(mid$(hhmmss,4,2)) + (cdbl(right$(hhmmss,2)) / 60)
End Function

et ensuite, tu stockes tes heure debut et fin dans des doubles et juste une soustraction à faire après :
Dim HD As Double, HF As Double, Duree As Double
HD 1200 ' 1200 minutes 20h00
HF 480 + 1440 ' 480 minutes 08h00 et 1440 minutes = 1 journée (le lendemain)
Duree = HF - HD
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 nov. 2007 à 16:43
à mettre dans un module, j'ai pas testé...

Option Explicit

Public Enum eTimeArg
    [1 - Arg Hours] = 1
    [2 - Arg Minutes]
    [3 - Arg Secondes]
End Enum

Public Type MyTime
    tH As Integer
    tM As Integer
    tS As Integer
End Type

Public Function GetHours(ByRef tValue As MyTime) As Integer
    GetHours = tValue.tH
End Function
Public Function GetMinutes(ByRef tValue As MyTime) As Integer
    GetMinutes = tValue.tM
End Function
Public Function GetSecondes(ByRef tValue As MyTime) As Integer
    GetSecondes = tValue.tS
End Function

Public Sub SetHours(ByRef tValue As MyTime, ByVal iValue As Integer)
    tValue.tH = iValue
End Sub
Public Sub SetMinutes(ByRef tValue As MyTime, ByVal iValue As Integer)
    tValue.tM = iValue
End Sub
Public Sub SetSecondes(ByRef tValue As MyTime, ByVal iValue As Integer)
    tValue.tS = iValue
End Sub
Public Sub SetMyTimeTYP(ByRef tValue As MyTime, ByVal iHours As Integer, ByVal iMinutes As Integer, ByVal iSecondes As Integer)
    tValue.tH = iHours
    tValue.tM = iMinutes
    tValue.tS = iSecondes
    
    VerifMyTime tValue
End Sub

Public Sub AddValue(ByRef tSrc As MyTime, ByRef tDest As MyTime, iValue As Integer, eUnit As eTimeArg)
    SetMyTimeTYP tDest, tSrc.tH, tSrc.tM,
tSrc.tS
    
    If eUnit = [1 - Arg Hours] Then
        tDest.tH = tDest.tH + iValue
    ElseIf eUnit = [2 - Arg Minutes] Then
        tDest.tM = tDest.tM + iValue
    ElseIf eUnit = [3 - Arg Secondes] Then
        tDest.tS = tDest.tS + iValue
    End If
    
    VerifMyTime tDest
End Sub

Public Sub SubValue(ByRef tSrc As MyTime, ByRef tDest As MyTime, iValue As Integer, eUnit As eTimeArg)
    SetMyTimeTYP tDest, tSrc.tH, tSrc.tM,
tSrc.tS
    
    If eUnit = [1 - Arg Hours] Then
        tDest.tH = tDest.tH - iValue
    ElseIf eUnit = [2 - Arg Minutes] Then
        tDest.tM = tDest.tM - iValue
    ElseIf eUnit = [3 - Arg Secondes] Then
        tDest.tS = tDest.tS - iValue
    End If
    
    VerifMyTime tDest
End Sub

Public Function GetFormatedMyTime(ByRef tValue As MyTime) As String
    VerifMyTime tValue
    GetFormatedMyTime = Format$(tValue.tH, "00") & ":" & Format$(tValue.tM, "00") & ":" & Format$(tValue.tS, "00")
End Function

Public Sub SetMyTimeSTR(ByRef tValue As MyTime, ByVal sTime As String)
    Dim aTime() As String
    aTime = Split(sTime, ":")
    SetMyTimeTYP tValue, Val(aTime(0)), Val(aTime(1)),
Val(aTime(2))
End Sub

Private Sub VerifMyTime(ByRef tValue As MyTime)
    Dim iTmp As Integer
    
    If tValue.tS > 59 Then
        iTmp = tValue.tS Mod 60
        tValue.tS = tValue.tS \ 60
    Else
        iTmp = 0
    End If
    
    tValue.tM = tValue.tM + iTmp

    If tValue.tM > 59 Then
        iTmp = tValue.tM Mod 60
        tValue.tM = tValue.tM \ 60
    Else
        iTmp = 0
    End If
    
    tValue.tH = tValue.tH + iTmp
End Sub

++
PCPT  [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 nov. 2007 à 16:56
'   WOUPSSSSSSSSSS


'-----------------------------------------------


'à modifier :


'-----------------------------------------------




Private Sub 
VerifMyTime(
ByRef 
tValue 
As 
MyTime)

    Dim iTmp As Integer
    
    If tValue.tS > 59 Then
        iTmp = tValue.tS \ 60
        tValue.tS = tValue.tS Mod 60
    Else
        iTmp = 0
    End If
    
    tValue.tM = tValue.tM + iTmp

    If tValue.tM > 59 Then
        iTmp = tValue.tM \ 60
        tValue.tM = tValue.tM Mod 60
    Else
        iTmp = 0
    End If
    
    tValue.tH = tValue.tH + iTmp
End Sub

'-----------------------------------------------

'   EXEMPLE
Option Explicit

Private Sub Form_Load()
    Dim t24 As MyTime, t4 As MyTime, tRes As MyTime
    
    SetMyTimeSTR t24, "24:00:00"

'   24-20 = 4
    SubValue t24, t4, 20, [1 - Arg Hours]
 
'   4+8
    AddValue t4, tRes, 8, [1 - Arg Hours]

'   résultat formaté
    MsgBox GetFormatedMyTime(tRes) 'doit renvoyer 12:00:00

'   ajoute 92 secondes + résultat
    AddValue tRes, tRes, 92, [3 - Arg Secondes]
    MsgBox GetFormatedMyTime(tRes) 'doit renvoyer 12:01:32
End Sub
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 nov. 2007 à 17:43
cherchez l'erreur...

(sisi, il y en a une autre, et 3 améliorations possibles)
0
Rejoignez-nous