Sub test()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim EF As Object 'déclare la variable EF (Explorateur de Fichiers)
Dim DS As Object 'déclare la variable DS (Dossier Source)
Dim FS As Object 'déclare la variable FS (FichierS)
Dim F As Object 'déclare la variable F (Fichier)
Dim FN As String 'déclare la variable FN (Fin du Nom)
Dim DSer As Date 'déclare la variable DSer (Date Serial)
Dim HSer As Variant 'déclare la variable HSer (Heure Serial)
Dim DeH As Variant 'déclare la variable DeH (Date et Heure)
Dim Max As Variant 'déclare la variable Max (valeur MAXimale)
Dim NF As String 'déclare la variable NF (Nom du Fichier)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim NT As String 'déclare la variable NT (Numéro de Train)
Set CD = ThisWorkbook 'définit la classeur destination CD
Set OD = CD.Worksheets(1) 'définit l'onglet destination OD
CA = "Z:\poubelle\Cesar"
'CA = "C:\Users\0017475V\Documents\Solferino\Roulement\Journal Actions" 'définit le chemin d'acces CA
Set EF = CreateObject("Scripting.FileSystemObject") 'définit l'explorateur de fichiers EF
Set DS = EF.GetFolder(CA) 'définit le dossier source DS
Set FS = DS.Files 'définit l'ensemble des fichier FS du dossier source DS
For Each F In FS 'boucle sur tous les fichiers F de FS
If Left(F.Name, 23) = "JournalActionsRoulement" Then 'condition : si le nom du fichier commence par "JournalActionsRoulement"
FN = Split(Mid(F.Name, 25), ".")(0) 'définit la fin du nom FN (date et heure)
DSer = DateSerial(Year(Split(FN, "_")(0)), Month(Split(FN, "_")(0)), Day(Split(FN, "_")(0))) 'définit le numero de série de la date DSer
HSer = TimeSerial(Split(Split(FN, "_")(1), "-")(0), Split(Split(FN, "_")(1), "-")(1), Split(Split(FN, "_")(1), "-")(2)) 'définit le numéro de série de l'heure HSer
DeH = DSer & " " & HSer 'définit la date et l'heure DeH
If DeH > Max Then Max = DeH: NF = F.Name 'si Deh est supérieure à Max (qui au départ vaut 0), définit la variable Max et le nom du fichier NF
End If 'fin de la condition
Next F 'prochain fichier de la boucle
Set CS = Workbooks.Open(CA & "\" & NF) 'définit la classeur source CS (ayant NF comme nom) en l'ouvrant
Set OS = CS.Worksheets(1) 'définit l'onglet source OS
OS.Range("A8:F2000").Offset(1, 0).Copy OD.Range("A2") 'copy le tableau de l'onglet source à partir de A9 et le colle dans A2 de l'onglet destination
CS.Close False 'ferme le classeur source sans enregistrer les modifications
OD.Range("AN1:AO2").Copy
DL = OD.Cells(Application.Rows.Count, "F").End(xlUp).Row
OD.Range("A2:F" & DL).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Set dico = CreateObject("scripting.dictionary")
Set dates = CreateObject("scripting.dictionary")
For n = 2 To DL
'***************
'numéro de train
If UBound(Split(OD.Cells(n, "F").Value, " ")) > 9 Then
NT = Split(OD.Cells(n, "F").Value, " ")(10)
If Left(NT, 2) = 19 Or lef(NT, 3) = 149 Then GoTo suite
End If
'***************
If InStr(Range("F" & n), "Suppression avec graphicage de l'élément de rang") <> 0 Then
x = Range("F" & n)
dico(x) = Right(x, 11)
dates(Right(x, 11)) = CDate(Replace(Right(x, 11), ".", ""))
End If
suite: 'étiquette
Next n
A = dico.keys
b = dico.items
C = dates.keys
For n = LBound(C) To UBound(C)
For m = LBound(C) To UBound(C)
If C(n) < C(m) Then temp = C(n): C(n) = C(m): C(m) = temp
Next m
Next n
Range("H2:I32").ClearContents
For n = LBound(C) To UBound(C)
Cells(2 + n, 8) = C(n)
For m = LBound(A) To UBound(A)
If b(m) = C(n) Then tot = tot + 1
Next
Cells(2 + n, 9) = tot
tot = 0
Next
End Sub