Function Gras(c As Range) As Boolean
Gras = c.Characters(1, 1).Font.Bold
End Function
Sub Importer()
Dim t#, F As Worksheet, d As Object, derlig1&, tablo, i&, x$, j&, derlig&
Dim P As Range, code, coderest(), flag As Boolean
t = Timer
Set F = Feuil1 'CodeName de la feuille de destination
Set d = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
'---liste sans doublon des concaténations de A à H---
If F.FilterMode Then F.ShowAllData 'si la feuille est filtrée
derlig1 = F.Cells(F.Rows.Count, 1).End(xlUp).Row
If derlig1 > 7 Then
    tablo = F.Range("A8:H" & derlig1) 'matrice, plus rapide
    For i = 1 To UBound(tablo)
        x = ""
        For j = 1 To 8 'A à H
            x = x & "#" & tablo(i, j)
        Next j
        If x <> "" Then d(x) = i 'repérage de la ligne
    Next i
End If
F.Range("A8:K" & F.Rows.Count).Delete xlUp 'RAZ
'---copie du tableau source---
With Workbooks.Open(ThisWorkbook.Path & "\MATOS.xlsx").Sheets(1) 'feuille source
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    derlig = .Cells(.Rows.Count, 1).End(xlUp).Row
    If derlig > 7 Then .Range("A8:K" & derlig).Copy F.[A8]
    .Parent.Close False
    If derlig < 8 Then derlig = 7: GoTo 1
End With
'---suppression des lignes en gras---
F.[L:L].Insert 'insertion d'une colonne auxiliaire devant la colonne L
With F.Range("L8:L" & derlig)
    .FormulaR1C1 = "=1/Gras(RC1)" 'utilise la fonction
    .Value = .Value 'supprime les formules
    F.Range("A8", .Cells).Sort .Cells, xlDescending, Header:=xlNo 'tri pour accélérer, les "1" sont en bas
    derlig = derlig - Application.Count(.Cells)
    On Error Resume Next 's'il n'y a pas de police "gras"
    Intersect(.SpecialCells(xlCellTypeConstants, 1).EntireRow, F.[A:L]).Delete xlUp
End With
F.[L:L].Delete 'suppression de la colonne auxiliaire
'---repositionnement des codes colonne L---
If derlig1 > 7 And derlig > 7 Then
    tablo = F.Range("A8:H" & derlig)
    Set P = F.Range("L8:L" & derlig1)
    code = P.Resize(, 2) 'au moins 2 éléments
    ReDim coderest(1 To derlig, 1 To 2)
    For i = 1 To UBound(tablo)
        x = ""
        For j = 1 To 8 'A à H
            x = x & "#" & tablo(i, j)
        Next j
        If d.exists(x) Then
            j = d(x)
            coderest(i, 1) = code(j, 1)
            If P(j).Interior.ColorIndex <> xlNone Then coderest(i, 2) = P(j).Interior.Color: flag = True
        End If
    Next i
    F.Range("L8:L" & derlig) = coderest
    '---restitution des couleurs colonne L---
    If flag Then
        P.Interior.ColorIndex = xlNone 'RAZ des couleurs
        For i = 1 To UBound(tablo)
            If coderest(i, 2) <> "" Then P(i).Interior.Color = coderest(i, 2)
        Next i
    End If
End If
'---finale---
F.Range("B8:L" & derlig).Borders.Weight = xlThin 'bordures
1 F.Rows(derlig + 1 & ":" & F.Rows.Count).Delete 'RAZ en dessous du tableau
With F.UsedRange: End With 'actualise la barre de défilement verticale
Application.ScreenUpdating = True
MsgBox "Durée " & Format(Timer - t, "0.00 \s"), , "Importation"
End Sub