Copie de données Excel dans Word et mise en forme

Bonjour à toutes et à tous !

J'ai besoin de créer une macro VBA pour le boulot et je ne m'en sors pas ...

Nous avons un tableau Excel, de quelques centaines de lignes contenant diverses informations.

Après avoir filtré le tableau, par exemple pour avoir toutes les publications éditées en 2018, il faut que je prenne les informations suivantes :

Les noms d'auteurs en colonne C, certains en italique ou soulignés (ex : Golf Arthur, Polo Martine, Foot Robert)

Le titre de la publication en colonne D (ex : Intérêts de la sous traitance de molécules de cuivre)

Le nom de la revue en colonne E, en gras (ex : Cells)

L'année de publication en colonne A

Un identifiant unique, contenant un lien hyper texte, en colonne B

Pour les mettre dans cette mise en forme (il est important de garder la mise en forme source du Excel), dans un nouveau fichier Word :

Golf Arthur, Polo Martine, Foot Robert. Intérêts de la sous traitance de molécules de cuivre. Cells (2018)

IDUnique

Puis nous passons à la ligne suivante du tableau, qui reprendra cette mise en forme, jusqu'à ce que le tableau se finisse.

Une fenêtre devra aussi s'ouvrir pour demander où l'on souhaite enregistrer le fichier Word (sur lequel sera copié les valeurs).

Rien que ça !!

Je n'y connais vraiment pas grand chose, et ai commencé le VBA suivant avec les commentaires, mais je sens que je m'embourbe ... :

Private Sub ExportVersWord_Click()

With Worksheets("Publications-2018")
'prendre les éléments du tableau qui a été filtré préalablement, et les concaténer dans une phrase
ligne = Rows("1").Select

    Dim Auteurs As String
    Dim Titre As String
    Dim NomDeRevue As String
    Dim Annee As String
    Dim idhal As String

    'On commence à partir de la ligne 4
    For i = 4 To ligne
        'Si la ligne est visible, = résultat du filtre
        If Not .Rows(i).Hidden Then
        'On définit les variables, avec colonne$ on récupère la valeur en descendant de ligne en ligne tout en restant sur la colonne
            'On sélectionne colonne$
            Auteurs = .Range("C$" & i).Select
            'Après sélection, on copie avec la mise en forme
            Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _False, Transpose:=False
            Titre = .Range("D$" & i).Select
            Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _False, Transpose:=False
            NomDeRevue = .Range("E$" & i).Select
            Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _False, Transpose:=False
            Annee = .Range("A$" & i).Select
            Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _False, Transpose:=False
            idhal = .Range("B$" & i).Hyperlinks(1).Address

            'On concatène les valeurs dans une phrase
            '& Chr(10) & & Chr(13) & servent pour un retour à la ligne
            Phrase = " - " & Auteurs & ". " & Titre & ". " & NomDeRevue & " (" & Annee & ")" & Chr(10) & & Chr(13) & & idhal & "."

            'Coller cette phrase dans un Word :
            'Ouvrir Word :
            'Nécessite d'activer la référence Microsoft Word xx.x object library
            '(dans la fenêtre VBE, cliquez sur Outils, Référénces et cocher la référence)
            Dim wdApp As New Word.Application
            Dim wdDoc As Word.Document

            'Ouvrir le word
            Set wdDoc = wdApp.Documents.Open
            wdApp.Visible = True
            wdDoc.Activate

            'on copie de la phrase, et on passe à la suivante
            texte = texte & IIf(texte <> "", vbNewLine, "") & Phrase.Copy

            'Collage
            wdDoc.ActiveWindow.ActivePane.Selection.PasteAndFormat (wdPasteDefault)

            'Saut de ligne dans le word
            Selection.InsertAfter vbCrLf

        End If
    Next i

            'ouvrir une boite de dialogue pour demander le chemin d'enregistrement du word
            With Application.FileDialog(msoFileDialogFolderPicker)
                If .Show = -1 Then
                    chemin = .SelectedItems(1) & "\"
                End If
            End With

            'On vide la mémoire des objets
            Set wdDoc = Nothing
            Set wdApp = Nothing
End With

End Sub

Auriez vous des idées pour m'aider svp ?

Merci

Rechercher des sujets similaires à "copie donnees word mise forme"