Copier coller Excel vers word - mise en forme

Bonjour

Débutant en vba, j'essaie tant bien que mal de développer mes macros pour créer un fichier de dimensionnement produit pour mon boulot.

Une fois le dimensionnement réalisé, j'obtiens des valeurs sous excel que je renvoi dans une trame word afin d'éditer la fiche technique du produit correspondant.

J'ai réussi a réaliser les opérations d'ouverture de fichier word et de copier/coller à l'emplacement de signets définis dans les tableaux word. Deux problèmes persistent :

- lors du collage, j'aimerais que les valeurs prennent la mise en forme du tableau word

- lorsque la valeur est collée, ça m'ajoute un renvoi à la ligne qui agrandit de fait les cellules. J'aimerais qu'il n'y ait pas ce renvoi.

D'avance merci pour vos retours et votre aide

Benjamin

Bonjour,

Pour coller proprement une valeur quelconque dans un tableau Word (et éviter des retours-ligne), inutile de placer des signets dans les cellules du tableau.

Voici un exemple pour écrire "BlaBla" dans la cellule ligne 2 colonne 3 du 2ème tableau du doc (en gardant la mise en forme définie dans le doc) :

WordDoc.Tables(2).Cell(2, 3).Range.Text = "BlaBla"

(nb : ici cell n'a pas de S à la fin ...)

"BlaBla" pouvant être remplacé par une expression du genre : Sheets("Machin").Range("B2").value

Et s'il s'agit de compléter le contenu de la cellule de ce tableau word :

WordDoc.Tables(2).Cell(2, 3).Range.InsertAfter "Blabla"

Pierre

Bonjour

Tout d'abord merci pour votre retour rapide

J'ai essayé d'adapter le code à mon fichier en mettant dans ma macro excel :

Worddoc.Tables(1).Cell(2, 2).Range.Text = Sheets("FT SC 2500").Range("E5").Value

Quand je l’exécute, j'ai une erreur 424 objet requis.

J'avais ce type d'erreur avec mes premiers copier-coller car je ne mettais pas wordapp au début des lignes de code. J'ai donc fait quelques essais sur ce code, mais ils restent infructueux.

Bonjour,

Voici du code un peu plus complet :

Option Explicit

' ***********************************************************************
' *****                                                             *****
' *****        CODE PierreP56 : http://tatiak.canalblog.com/        *****
' *****                                                             *****
' ***********************************************************************

Public WordApp As Object, WordDoc As Object, Rng As Object

Sub Demo_Modif_Tableau_Word()
Dim Ndf As String, Num As Integer, i As Integer

    Ndf = Word_A_Lire
    If Fichier_IsOpen(Ndf) Then
        Set WordApp = GetObject(, "Word.Application")
        Set WordDoc = WordApp.Documents(Ndf)
    Else
        Set WordApp = CreateObject("Word.Application")
        Set WordDoc = WordApp.Documents.Open(Ndf, ReadOnly:=False)
    End If
    WordApp.Visible = False

    With WordDoc
        ' démo de modification du 3ème tableau contenu dans le doc
        Num = 3
        If Exist_Tableau(Num) Then   ' test de l'existence du tableau n° 3
            With .Tables(Num)
                ' suppression des lignes à partir de la 3ème ligne
                For i = .Rows.Count To 3 Step -1
                    .Rows(i).Delete
                Next i

                ' remplacement du contenu de la 2ème ligne
                .cell(2, 1).Range.Text = "A1 lig 2 col 1"
                .cell(2, 2).Range.Text = "B1 lig 2 col 2"

                ' ajout d'une 3ème ligne avec du contenu
                .Rows.Add
                .cell(3, 1).Range.Text = "A2 lig 3 col 1"
                .cell(3, 2).Range.Text = "B2 lig 3 col 2"
            End With
        End If

    End With

    WordApp.Visible = True
    Set WordDoc = Nothing
    Set WordApp = Nothing
End Sub

Pierre

PS et en bonus quelques unes de mes fonctions perso utiles ici :

Function Exist_Tableau(Num As Integer) As Boolean
    Exist_Tableau = True
    On Error GoTo errhdlr
    With WordDoc.Tables(Num).cell(1, 1)
        .Range.Text = .Range.Text
    End With
    Exit Function

errhdlr:
    Exist_Tableau = False
End Function

Function Word_A_Lire() As String
    ChDrive (Left(ActiveWorkbook.Path, 1))
    ChDir ActiveWorkbook.Path
    Word_A_Lire = Application.GetOpenFilename("Fichiers Word,*.doc;*.docx")
End Function

Function Fichier_IsOpen(ByRef ttk As String) As Boolean
    On Error Resume Next
    Open ttk For Input Lock Read As #1
    Close #1
    Fichier_IsOpen = (Err.Number <> 0)
End Function

Re

J'ai réussi à ce que ça fonctionne en appliquant le code ci dessous

wordapp.ActiveDocument.Tables(1).Cell(2, 2).Range.Text = Sheets("FT SC 2500").Range("E5").Value

Ca fonctionne super bien. Encore merci pour votre aide.

Dernière petite demande si vous voulez bien. J'ouvre un document word avec la macro mais il reste réduit à la barre des taches. Serait-il possible qu'il s'affiche en pleine page "devant" mon excel?

Nos messages se sont croisés. J'ai vu votre réponse après mon envoi. Je vais donc lire attentivement votre post.

Merci

Rechercher des sujets similaires à "copier coller word mise forme"