Option Explicit
Option Base 1
Sub Recuperer60()
Const Repert = "C:\Fact\Facturation"
Const LigneDepart = 2
Dim i&, k&, Ligne&, rep$, LesFichiers(), Fichier$
Application.ScreenUpdating = False
ThisWorkbook.Sheets("Lignes60").Activate
If Right(Repert, 1) <> "\" Then rep = Repert & "\" Else rep = Repert
Fichier = Dir(rep & "*.xlsm")
Do While Fichier <> ""
k = k + 1
ReDim Preserve LesFichiers(1 To k)
LesFichiers(k) = rep & Fichier
Fichier = Dir
Loop
With ThisWorkbook.Sheets("Lignes60")
.Range("A" & LigneDepart & ":A" & .Rows.Count).Clear
If k = 0 Then Exit Sub
.Range("A" & LigneDepart).Resize(k).Value = Application.Transpose(LesFichiers)
If k > 1 Then .Range("A" & LigneDepart).Resize(k).Sort _
key1:=.Range("A" & LigneDepart), Header:=xlNo
LesFichiers = .Range("A" & LigneDepart).Resize(k + 1).Value
.Range("A" & LigneDepart & ":A" & .Rows.Count).Clear
Ligne = LigneDepart
For i = 1 To k
Workbooks.Open LesFichiers(i, 1)
ActiveWorkbook.ActiveSheet.Rows(60).Copy
.Rows(Ligne).PasteSpecial Paste:=xlPasteValues
Application.DisplayAlerts = False
ActiveWorkbook.Close Savechanges:=False
Application.DisplayAlerts = True
Ligne = Ligne + 1
Next i
End With
Application.CutCopyMode = False
Application.Goto Range("A" & IIf(LigneDepart = 1, 1, LigneDepart - 1)), True
Application.ScreenUpdating = True
End Sub