Sub Colorer2()
    Dim TabPh() As Variant
    Dim TabPré() As Variant
    Dim DicoPré As Object
    
    Set DicoPré = CreateObject("Scripting.dictionary")
    
    deb = Timer
    With Sheets("Prénoms")
        TabPré = .Range("A1").CurrentRegion.Value
        For i = LBound(TabPré, 1) To UBound(TabPré, 1)
            clé = TabPré(i, 1)
            If Not DicoPré.exists(clé) Then DicoPré.Add clé, i
        Next i
    End With
    With Sheets("Phrase")
        LastLine = .Range("B" & .Rows.Count).End(xlUp).Row
        TabPh = .Range("B2:C" & LastLine).Value
        
        For i = LBound(TabPh, 1) To UBound(TabPh, 1)
            For Each clé In DicoPré.keys
            'MsgBox clé
                If UCase(Trim(TabPh(i, 1))) = UCase(clé) Or InStr(1, UCase(TabPh(i, 1)), " " & UCase(clé) & " ") <> 0 Or InStr(1, UCase(TabPh(i, 1)), UCase(clé) & " ") <> 0 Or InStr(1, UCase(TabPh(i, 1)), " " & UCase(clé)) <> 0 Then
                    TabPh(i, 2) = clé
                    Exit For
                End If
            
            Next clé
        Next i
 
        .Range("B2:C" & LastLine) = TabPh
    End With
    MsgBox "Opération terminée en " & Timer - deb & " s"
End Sub