Salut,
Sur 200 000 lignes ça prend un peu de temps mais ça se fait. Par contre je comprend pas l'utilité du code mais là c'est une autre histoire.
Il y a peut être moyen d'optimiser encore ça mais pour le moment je te propose ceci:
Option Explicit
Option Base 1
Sub recherche()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim tableau()
Dim i As Long, j As Long
tableau = Range(Cells(2, 1), Cells(Range("F2") + 1, 4))
For i = LBound(tableau, 1) To UBound(tableau, 1)
For j = LBound(tableau, 1) To UBound(tableau, 1)
If Abs(tableau(i, 1) - tableau(j, 3)) < 0.000001 Then tableau(j, 4) = tableau(i, 2) Else If tableau(j, 3) < tableau(i, 1) And tableau(j, 3) > tableau(i + 1, 1) Then tableau(j, 4) = (tableau(i, 2) + tableau(i + 1, 2)) / 2
Next j
Next i
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Range("A2").Resize(UBound(tableau, 1), UBound(tableau, 2)) = tableau
End Sub
par contre je comprend pas pourquoi tu boucles deux fois dans le même tableau c'est pas 200 000 lignes que le code va traité mais 200 000 * 200 000
ça reste long surtout que tes données s'arrête à moins de 35 000 ligne