Bonjour,
Pour t'aider à clarifier ton problème...
Sub DonnéesSessions()
Dim ListS(), TDis(), n%, i%, ss%
With ActiveSheet
n = .Cells(.Rows.Count, 7).End(xlUp).Row
For i = 1 To n
If .Cells(i, 7) = "Début de session" Then
If .Cells(i, 9) = "Fin de session" Then
ss = ss + 1: ReDim Preserve ListS(1, ss)
ListS(0, ss) = CDate(.Cells(i, 8).Value)
ListS(1, ss) = CDate(.Cells(i, 10).Value)
End If
End If
Next i
End With
ReDim TDis(ss - 1, 2)
TDis(0, 0) = "Fin session préc."
TDis(0, 1) = "Début session"
TDis(0, 2) = "Durée inter-sessions"
For i = 1 To ss - 1
TDis(i, 0) = ListS(1, i)
TDis(i, 1) = ListS(0, i + 1)
TDis(i, 2) = TDis(i, 1) - TDis(i, 0)
Next i
Application.ScreenUpdating = False
With Worksheets.Add(before:=Worksheets(1))
With .Range("A1").Resize(ss, 3)
.Value = TDis
.HorizontalAlignment = xlCenter
.Resize(, 2).NumberFormat = "dd/mm/yyyy hh:mm:ss"
.Offset(, 2).Resize(, 1).NumberFormat = "[h]:mm:ss"
.Columns.AutoFit
End With
End With
End Sub
Cette macro opère une extraction des données de sessions pour dresser un tableau des durées inter-sessions sur une nouvelle feuille.
Tu la lances à partir de la boîte de dialogue macro...
Cordialement.