Je ne vois d'incompatibilité que s'il n'y a pas de facture réglées ! Cela se repère par la valeur de fr au moment de l'erreur.
NB- en mode débogage, tu détectes la valeur actuelle des variables en les survolant à la souris, la valeur s'affiche dans une info-bulle.
J'ai omis de tester si des factures réglées étaient récupérées : il faut mettre la fin de la macro sous condition :
Application.ScreenUpdating = False
If fr > 0 Then
With Worksheets("Factures réglées")
n = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(n, 1).Resize(fr, 11).Value = WorksheetFunction.Transpose(TFr)
End With
For f = 0 To 1
If ls(f) <> "" Then
ls(f) = Split(ls(f), ";")
With Worksheets(Frel(f))
n = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = UBound(ls(f)) To 1 Step -1
.Rows(ls(f)(i)).Delete
Next i
End With
End If
Next f
End If
End Sub