Bonjour à toutes et tous,
Je suis en train d'automatiser le traitetemnt d'un fichier contenant des dates.
J'ai écritr la fonction suivante
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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
Sont au bon format (lire, avec les millisecondes).
Code : Sélectionner tout - Visualiser dans une fenêtre à part Cells(j, 10) = stopDate - startDate
Ce que je ne comprends pas, c'est pourquoi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Debug.Print "Start localisé en " & i & " : " & Format(dates.Cells(i).Value, "hh:mm:ss.000")Me sortent un trace à la seconde
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 For i = 1 To UBound(durations) Debug.Print Format(durations(i), "hh:mm:ss.000") Next
Partager