Calcul de différence de dates
Bonjour à toutes et tous,
Je suis en train d'automatiser le traitetemnt d'un fichier contenant des dates.
J'ai écritr la fonction suivante
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
Function Lire(ByVal NomFichier As String)
Application.ScreenUpdating = False
Workbooks.Open Filename:=NomFichier, Format:=2, Local:=False
Columns("A:A").Select
Selection.NumberFormat = "dd/mm/yyyy hh:mm:ss.000"
Columns("J:J").Select
Selection.NumberFormat = "hh:mm:ss.000"
Dim benchTypes, steps As Range
Set benchTypes = Range("B1:B" & Range("B1").End(xlDown).Row)
Set steps = Range("C1:C" & Range("C1").End(xlDown).Row)
Set dates = Range("A1:A" & Range("A1").End(xlDown).Row)
Dim durations() As Date
Dim stopDate As Date
Dim startDate As Date
ReDim durations(0)
For i = 1 To dates.Cells.Count
If steps.Cells(i).Text = "START" Then
startDate = dates.Cells(i).Value
Debug.Print "Start localisé en " & i & " : " & Format(dates.Cells(i).Value, "hh:mm:ss.000")
For j = i To dates.Cells.Count
If steps.Cells(j).Text = "STOP" Then
stopDate = dates.Cells(j).Value
Debug.Print "Stop localisé " & j & " : " & dates.Cells(j).Value
Debug.Print stopDate - startDate
Cells(j, 10) = stopDate - startDate
ReDim Preserve durations(UBound(durations) + 1)
durations(UBound(durations)) = stopDate - startDate
Exit For
End If
Next
End If
Next
Debug.Print UBound(durations) & " Durées collectées"
For i = 1 To UBound(durations)
Debug.Print Format(durations(i), "hh:mm:ss.000")
Next
Application.ScreenUpdating = True
End Function |
J'ai simplifié le code pour l'exemple, le but est de faire des différences de dates à la milliseconde près (faute de mieux pour excel si j'ai bien comprit).
Avec la code ci dessus, l'import de passe bien, les formatage de la colonne A est ok, les données que j'écrit dans la colonne J
Code:
Cells(j, 10) = stopDate - startDate
Sont au bon format (lire, avec les millisecondes).
Ce que je ne comprends pas, c'est pourquoi
Code:
1 2
|
Debug.Print "Start localisé en " & i & " : " & Format(dates.Cells(i).Value, "hh:mm:ss.000") |
Code:
1 2 3
| For i = 1 To UBound(durations)
Debug.Print Format(durations(i), "hh:mm:ss.000")
Next |
Me sortent un trace à la seconde