Sub Comparaison()
Dim F1 As Worksheet, F2 As Worksheet, d, P As Range, tablo, i&, v, tablo1, j&, k As Variant
Set F1 = Sheets("Feuil1")
Set F2 = Sheets("Feuil2")
If F1.FilterMode Then F1.ShowAllData 'si la feuille est filtrée
If F2.FilterMode Then F2.ShowAllData 'si la feuille est filtrée
Set d = CreateObject("Scripting.Dictionary")
Set P = F2.Range("B1", F2.Range("B" & F2.Rows.Count).End(xlUp)(2)) 'au moins 2 éléments
tablo = P 'matrice, plus rapide
'---liste pour accélérer---
For i = 1 To UBound(tablo) - 1
    v = tablo(i, 1)
    If IsNumeric(CStr(v)) Then d(v) = ""
Next i
'---analyse de la 1ère feuille---
Application.ScreenUpdating = False
tablo1 = F1.Range("B1", F1.Range("B" & F1.Rows.Count).End(xlUp)(2)) 'matrice, plus rapide, au moins 2 éléments
For i = 1 To UBound(tablo1) - 1
    v = tablo1(i, 1)
    If IsNumeric(CStr(v)) Then
        If Not d.exists(v) Then
            d(v) = "" 'ajoute un élément au Dictionary
            tablo = P
            For j = 1 To UBound(tablo) - 1
                If tablo(j, 1) > v Then tablo(j, 1) = Empty
            Next j
            k = Application.Match(Application.Max(tablo), tablo, 0)
            If IsNumeric(k) Then
                k = P(k).Row 'mémorise le numéro de ligne
                F2.Rows(k).Insert 'insère une ligne au dessus
                F1.Rows(i).Copy F2.Cells(k, 1) 'copier-coller
            End If
        End If
    End If
Next i
End Sub