Extraire des données Excel pour le coller dans un tableau Word

Bonjour à tous,

J'aurai besoin pour un projet d'extraire sur un fichier Excel le contenu de certaines cellules et de le coller dans un tableau Word.

Voici un exemple du fichier Excel :

excel extraction

Ce que je voudrais plus précisément dans cet exemple, c'est extraire à chaque fois la référence et le nombre de chaque objets.

L'extraction devrait suivre ce processus :

- J'identifie l'alias (ex : MOT), je me place sur la ligne de cet alias puis je me place aux colonnes C et D et j'extrais le contenu de ces deux cellules que je copie sur le bon tableau Word (identifié par son alias)

- Je fais exactement la même chose pour les autres objets (Pare-choc, Voiture...)

Voici le tableau sur lequel le contenu des cellules référence et nombre devrait être

word tableaux

Je voudrais donc que la macro identifie sur le tableau Word la ligne où il faut coller l'information grâce à son alias (même alias que sur Excel).

Puis ensuite dès que la ligne a été identifié le coller dans la bonne colonne.

J'espère que j'ai été claire dans ce que je souhaiterai faire.

Toute aide serait la bienvenue :)

Merci d'avance et bonne journée !

Bonjour,

Trop facile, une double boucle et hop :

Sub Complete_tableau(num As Integer, T As Variant)
Dim i As Integer, j As Integer

    With WordDoc.Tables(num)
        For i = 1 To UBound(T)
            For j = 2 To .Rows.Count
                If T(i, 1) = Left(.Cell(j, 2).Range.Text, Len(T(i, 1))) Then
                    .Cell(j, 3).Range.Text = T(i, 3)
                    .Cell(j, 4).Range.Text = T(i, 4)
                End If
            Next j
        Next i
    End With
End Sub

voir fichier démo

Pierre

6demo-muzan.zip (45.42 Ko)

Salut Pierre,

Je te remercie énormément pour ta réponse je crois que c'est bien ce que je voulais faire :)

Je vais regarder ton fichier, le tester pour voir si c'est ce que je voulais.

Je reviendrai vers toi !

Re Pierre, c'est exactement ce que je voulais faire mais je ne comprends pas dans le code comment il place l'information au bon endroit en identifiant l'alias.

Fin je ne vois pas où est déclaré dans le code le fait que l'information est extraite d'excel au tableau Word sur la ligne de l'alias.

Désolé, pour les questions je suis novice

Bonjour,

Alors voici un essai d'explications (c'est pas mon fort).

- la zone excel "source" (dans l'exemple A2:D6) est indiquée dans la ligne :

If Exist_Tableau(1) Then Complete_tableau 1, Sheets(1).Range("A2:D6").Value

- cette zone correspond au tableau T (au sens array) de :

Sub Complete_tableau(num As Integer, T As Variant)

- dans cette Sub Complete_tableau, on boucle sur les lignes de T, et pour chaque valeur de la colonne 1 on boucle sur les lignes du tableau word (au sens grille) pour tester si la valeur de la colonne 2 correspond

A noter : la valeur .Cell(j, 2).Range.Text contient une marque de fin de paragraphe d’où le left(trucmachin pour tester si T(i, 1) est contenu dans .Cell(j, 2).Range.Text

Je ne sais pas si c'est bien explicite?

Pierre

D'accord merci beaucoup j'ai compris :)

Pierre, j'aurai une dernière demande.

Je voudrais faire la même chose donc extraire les données de certaines cellules Excel et les copier dans un tableau Word.

La seule chose qui change c'est qu'au lieu d'avoir un seule tableau est d'extraire tous les éléments identifiés avec leur alias, je voudrai avoir plusieurs tableaux donc un tableau par alias. Par exemple tableau 1 = MOT, tableau 2 = PAR et tableau 3 = VOIT.

Comme ci-dessous :

tableau renault

Pour l'identification des tableaux je les identifie pas par son n° d'ordre du genre ActiveDocument.Tables(1) ou par l'utilisation d'un signet.

Mais je leur attribue un titre en allant dans les propriétés du tableau.

Donc pour mon exemple, j'appelle tous les tableaux avec le même titre : TAB1.

Voici un exemple de code que j'ai été amené à développer qui montre comment ajouter 5 colonnes à tous les tableaux contenant le titre TAB1 sur Word :

Sub Modifier_Tableau_Titre()
    Dim tableau As Table

    With ActiveDocument
        If .Tables.Count >= 1 Then
            'Si il y a un ou plusieurs tableaux

            For Each tableau In ActiveDocument.Tables
                'On rentre dans la boucle For pour tous les tableaux du document Word
                If tableau.Title = "TAB1" Then
                    'On ne modifie pas le tableau si il ne s'appelle pas TAB1
                    Do While tableau.Columns.Count <= 1
                        'On modifie les tableaux que s'ils contiennent une colonne

                        With tableau

                            Selection.InsertColumnsRight
                            Selection.InsertColumnsRight
                            Selection.InsertColumnsRight
                            Selection.InsertColumnsRight
                            Selection.InsertColumnsRight
                            'On ajoute 5 colonnes au tableau
                        End With
                    Loop
                End If
            Next tableau
        End If
    End With
End Sub

Mon problème est que j'arrive à modifier des tableaux en leur attribuant un titre depuis Word.

Mais modifier des tableaux Word avec des titres depuis Excel ça je ne sais pas faire.

Je ne sais pas si tu as une solution, mais si oui je suis preneur :)

Bjr,

Il ne me semble pas utile de s'embêter avec des noms de tableaux. S'ils ont tous la même structure, il suffit encore ici de boucler.

Sub Complete_tableauX(T As Variant)
Dim i As Integer, j As Integer

    With WordDoc
        For i = 1 To .Tables.Count
            For j = 1 To UBound(T)
                If T(j, 1) = Left(.Tables(i).Cell(2, 2).Range.Text, Len(T(j, 1))) Then
                    .Tables(i).Cell(2, 3).Range.Text = T(j, 3)
                    .Tables(i).Cell(2, 4).Range.Text = T(j, 4)
                End If
            Next j
        Next i
    End With
End Sub

Faire simple.

Pierre

Salut Pierre, oui ta solution est beaucoup plus simple je te remercie énormément pour ton aide de qualité !

Rechercher des sujets similaires à "extraire donnees coller tableau word"