Sub Importer()
Dim d As Object, tablo, x$, v&, i&, F As Worksheet
'---liste sans doublon des numéros de train---
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
tablo = Sheets("Restauration").[A1].CurrentRegion.Columns(6).Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
For i = 2 To UBound(tablo)
x = tablo(i, 1)
v = Val(Mid(x, InStr(x, "train") + 5))
If v = 0 Then v = Val(Mid(x, InStr(x, "étape") + 5))
If v Then d(v) = ""
Next
'---traitement et copie du fichier source---
Set F = Sheets("Données") 'à adapter
Application.ScreenUpdating = False
F.Range("A4:F" & F.Rows.Count).Delete xlUp 'RAZ
Ouvrir 'lance la macro
With ActiveWorkbook
If .Name = ThisWorkbook.Name Then Exit Sub
With .Sheets(1).[A8].CurrentRegion
tablo = .Columns(6).Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
For i = UBound(tablo) To 2 Step -1
x = tablo(i, 1)
v = Val(Mid(x, InStr(x, "train") + 5))
If v = 0 Then v = Val(Mid(x, InStr(x, "étape") + 5))
If InStr(x, "train 19") Or InStr(x, "étape 19") Or InStr(x, "train 149") Or InStr(x, "étape 149") _
Or d.exists(v) Then .Rows(i).Delete xlUp
Next
If .Rows.Count > 1 Then
F.[A4].Resize(.Rows.Count - 1, 6) = .Offset(1).Resize(.Rows.Count - 1, 6).Value 'copie les valeurs
F.[A2:F3].AutoFill F.[A2].Resize(.Rows.Count + 1, 6), xlFillFormats 'tire les formats
End If
End With
.Close False 'ferme le fichier
End With
End Sub
Sub Ouvrir()
Dim chemin$, fichier$, x$
chemin = "C:\Users\0017475V\Documents\ICV - HRE\Données\" 'à adapter
'chemin = ThisWorkbook.Path & "\" 'pour tester plus facilement chez moi...
fichier = Dir(chemin & "Suivi_Qualité_ICV_??????_lignes.xlsx")
While fichier <> "": x = fichier: fichier = Dir: Wend
If x <> "" Then Workbooks.Open chemin & x Else MsgBox "Aucun fichier trouvé..."
End Sub