Sub CollerWord()
' Après avoir copié les paragraphes depuis Word dans le Press-Papier :
' - Sélectionner la Cellule A1
' - Coller (toutes les lignes Word sont collées dans la feuille avec
'       1 ligne Excel = 1 ligne Word
'       Format ligne Excel = Format Ligne Word
' - Bouton Coller le contenu du Presse-Papier
'       -> La colonne A est copiée en colonne B avec pour règle :
'       si la ligne courante colonne A est une ligne de Titre (voir fonction EstTitre)
'           Tout le Bloc de lignes qui suit sera copié en B dans une même Cellule
'                   en conservant le format de chaque ligne d'origine
'
Dim i As Integer, j As Integer, k As Integer, PosDeb As Double
Dim CelluleI As Range
Dim CelluleO As Range
Dim Derligne As Double
Dim Titre As Boolean
    Application.ScreenUpdating = False
    Derligne = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row ' colonne A
    Range("B:B").ClearContents
 
    ' Etape 1 - Copie sans mise en forme
    '-----------------------------------
    k = 0
    For i = 1 To Derligne
        Set CelluleI = Cells(i, 1)
        Titre = EstTitre(CelluleI)
        If Titre Then
            k = k + 1
        End If
        Set CelluleO = Cells(k, 2)
        If Titre Then
            CelluleO.Value = CelluleI.Value
            PosDeb = 0
        Else
            PosDeb = Len(CelluleO.Value) + 1 ' à cause du VbLf
            CelluleO.Value = CelluleO.Value & vbLf & CelluleI.Value
        End If
    Next i
    ' Etape 2 - Mise en forme
    '------------------------
    k = 0
    For i = 1 To Derligne
        Set CelluleI = Cells(i, 1)
        Titre = EstTitre(CelluleI)
        If Titre Then
            k = k + 1
        End If
        Set CelluleO = Cells(k, 2)
        If Titre Then
            PosDeb = 0
        Else
            PosDeb = PosDeb + Len(CelluleI.Offset(-1, 0).Value) + 1 ' à cause du VbLf
        End If
        For j = 1 To Len(CelluleI.Value)
            CelluleO.Characters(PosDeb + j, 1).Font.Bold = CelluleI.Characters(j, 1).Font.Bold
            CelluleO.Characters(PosDeb + j, 1).Font.Color = CelluleI.Characters(j, 1).Font.Color
            CelluleO.Characters(PosDeb + j, 1).Font.FontStyle = CelluleI.Characters(j, 1).Font.FontStyle
            CelluleO.Characters(PosDeb + j, 1).Font.Italic = CelluleI.Characters(j, 1).Font.Italic
            CelluleO.Characters(PosDeb + j, 1).Font.Underline = CelluleI.Characters(j, 1).Font.Underline
            CelluleO.Characters(PosDeb + j, 1).Font.Size = CelluleI.Characters(j, 1).Font.Size
            CelluleO.Characters(PosDeb + j, 1).Font.Name = CelluleI.Characters(j, 1).Font.Name
            CelluleO.Characters(PosDeb + j, 1).Font.Strikethrough = CelluleI.Characters(j, 1).Font.Strikethrough
            CelluleO.Characters(PosDeb + j, 1).Font.Subscript = CelluleI.Characters(j, 1).Font.Subscript
            CelluleO.Characters(PosDeb + j, 1).Font.Superscript = CelluleI.Characters(j, 1).Font.Superscript
        Next j
        CelluleO.Rows.AutoFit
    Next i
    Set CelluleI = Nothing
    Set CelluleO = Nothing
    Application.ScreenUpdating = True
End Sub
Function EstTitre(pRange As Range) As Boolean
' Si les 4 caractéristiques sont les mêmes que celles de la cellule modèle
Dim i As Integer
    EstTitre = True
    For i = 1 To Len(pRange.Value)
        If pRange.Characters(i, 1).Font.Name <> Range("MODELE_TITRE").Font.Name Or _
            pRange.Characters(i, 1).Font.Bold <> Range("MODELE_TITRE").Font.Bold Or _
            pRange.Characters(i, 1).Font.Size <> Range("MODELE_TITRE").Font.Size Or _
            pRange.Characters(i, 1).Font.Color <> Range("MODELE_TITRE").Font.Color Then
            EstTitre = False
            Exit For
        End If
    Next i
End Function