IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Copier plusieurs colonnes Excel dans un tableau Word [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 16
    Par défaut Copier plusieurs colonnes Excel dans un tableau Word
    Bonjour,

    J'ai une difficulté avec une macro excel de génération d'un tableau dans Word.

    J'ai pré-positionné un signet dans mon document word pour positionner mon tableau

    celui ci est constitué de 2 colonnes extraites d'excel.

    ces colonnes peuvent être de taille variable et sont par ailleurs filtrées pour l'extraction, mais ce n'est pas ici l'objet du problème.

    Je n'arrive pas à reconstituer mon tableau dans word à partir de 2 colonnes distinctes, et j'aimerais autant que possible rendre le fonctionnement dynamique (pouvoir créer mon tableau à partir de 3 colonnes par exemple).

    voici le code que j'ai écrit jusqu'à maintenant, j'ai ciblé la partie du code qui nous intéresse et supprimé les déclarations et créations de doc word


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    'PArray(0) contient le nom de ma feuille et Parray(1) l'espace des données sous la forme A2:A5,E2:E5,C2:C5, 
    'la colonne A1:A5 contient les données à filtrer, et je cherche à créer un tableau avec la colonne E2:E5 et C2:C5
     
    Dim doc As Word.Document
    Set InputDataForReport = Worksheets(PArray(0)).Range(PArray(1))
                    With InputDataForReport
     
                        'mon critère de filtrage est ici "AddedBM(Index)"
                        .Areas(1).Columns(1).AutoFilter Field:=1, Criteria1:=AddedBM(Index)
     
                        'Mon idée est ici de créer un tableau avec ma 2éme colonne, puis d'y ajouter devant ma première colonne
                        'J'ai aussi essayé de faire une union des range qui m'intéressent pour les copier, mais le résultat est incorrect, j'affiche dans word le tableau C2:E5...
                        .Areas(2).SpecialCells(xlCellTypeVisible).Copy
                        'on se positionne ici au niveau du signet
                        With doc.Bookmarks(ChapCell.Offset(0, 2).Value & Index).Range
                            .Select
                            .PasteSpecial Link:=False, _
                                      Placement:=wdInLine, _
                                      DisplayAsIcon:=False                               
                            .Tables(1).AutoFitBehavior wdAutoFitWindow
                        End With
     
                        'jusqu'ici tout va bien, c'est pour ajouter les autres colonnes que ça se gâte
                        For i = 3 To .Areas.Count
                            Set wdColumn = doc.Bookmarks(ChapCell.Offset(0, 2).Value & Index).Range.Tables(1).Columns.Add(1)
                            wdColumn.Select
     
                            'Cette commande ne génère pas un objet "range" constitué de la première colonne du coup testrng n'a pas les méthodes associées
                            Set testrng = doc.Selection.SetRange(Start:=Selection.Start, End:=Selection.End)
                            .Areas(i).SpecialCells(xlCellTypeVisible).Copy
                            With testrng
                                .Select
                                .PasteSpecial Link:=False, _ 'erreur
                                        Placement:=wdInLine, _
                                        DisplayAsIcon:=False
                                        'DataType:=wdPasteMetafilePicture,
                                        .Tables(1).AutoFitBehavior wdAutoFitWindow
                                End With
     
                        Next i
                    End With

    Merci d'avance pour vos réponses

  2. #2
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 16
    Par défaut
    Une solution de contournement consiste à créer une feuille temporaire pour recréer le tableau correctement disposé, puis le copier dans Word, avant de supprimer la feuille temporaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
                    With InputDataForReport
                        .Areas(1).Columns(1).AutoFilter Field:=1, Criteria1:=AddedBM(Index)
                        'Set wdTable = doc.Tables.Add(doc.Bookmarks(ChapCell.Offset(0, 2).Value & Index).Range, 1, .Areas.Count - 1)
                        Set tempSheet = Worksheets.Add
                        For i = 2 To .Areas.Count
                            .Areas(i).SpecialCells(xlCellTypeVisible).Copy tempSheet.Cells(1, i - 1)
                        Next i
                    End With
                    Set Report = tempSheet.Range("A1", ActiveCell.End(xlToRight).End(xlDown))
                    Report.Copy

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] copier coller cellule excel dans un tableau word
    Par zoullat dans le forum Excel
    Réponses: 9
    Dernier message: 07/09/2017, 15h41
  2. Réponses: 0
    Dernier message: 08/10/2015, 11h36
  3. Copier plusieurs Fichiers Excel dans un seul
    Par willoweiss dans le forum Excel
    Réponses: 1
    Dernier message: 10/12/2013, 10h52
  4. [XL-2007] Copier une cellule excel dans un signet word 2007
    Par krokos55 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/09/2012, 10h43
  5. [XL-2007] Copier plusieurs fichiers Excel dans un nouvel onglet à chaque fois
    Par OptionExplicitSu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/06/2012, 18h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo