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 :

copie tableau excel vers un document 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
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juillet 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2015
    Messages : 13
    Par défaut copie tableau excel vers un document word
    Bonjour,

    Je souhaiterais copier un tableau ou une plage de données de excel vers word.
    Quelqu'un pourrait-il m'aider svp ?
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comme beaucoup de contributeurs, je n'ouvre jamais les fichiers joints.
    Qu'as-tu déjà codé, pour ce projet ?
    Pour pouvoir t'aider, j'aimerais savoir
    • Pour Excel, sais-tu ce qu'est une cellule ou plage nommées ?
    • Pour Word, sais-tu ce qu'est un signet ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Comme Philippe Tulliez ( ), je n'ouvre pas les fichiers joints et comme tu ne donnes quasiment pas d'informations dans ta demande, ma réponse sera générique.

    Pour la copie dans Excel, utilise la méthode Copy de Range.
    https://msdn.microsoft.com/fr-fr/lib...0(v=office.15)

    Pour coller dans Word, méthode Paste (ou une de ses petites soeurs) appliqué au Range de l'emplacement souhaité.
    https://docs.microsoft.com/fr-fr/off...rd.range.paste

  4. #4
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juillet 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2015
    Messages : 13
    Par défaut Copie excel vers wors
    Bonjour
    Pour l'instant j'arrive à ouvrir Word avec les signets mais pas à y insérer les données de mon tableau
    Voici ce que j'ai fait

    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
    Sub exportDonneesDansSignetsWord()
     
        Dim AppWord As Word.Application
        Dim WordDoc As Word.Document
        Dim i As Byte
     
        Set AppWord = CreateObject("word.application")                              'ouvre session word
        Set WordDoc = AppWord.Documents.Open("E:\Essai Excel vers Word.docm")       'ouvre document Word Attention au chemin!!
        AppWord.Visible = True 'word affiché pendant l'operation
        For i = 1 To 50
            Range("TABLEAU" & i).Copy
            'les signets du document Word sont nommés Tableau1, Tableau2
            WordDoc.Bookmarks("Tableau1" & i).Range.Select(B4:D9)
            AppWord.Selection.Paste
        Next i
     
        AppWord.Visible = True 'affiche le document Word
        WordDoc.Close False 'ferme le document word en sauvegardant les données
        'AppWord.Quit 'ferme la session Word
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juillet 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2015
    Messages : 13
    Par défaut
    Bonjour
    J'ai modifié mon code mais il me met une erreur 1004

    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
    Private Sub CommandButton1_Click()
     
        Dim AppWord As Word.Application
        Dim WordDoc As Word.Document
        Dim i As Byte
     
        Set AppWord = CreateObject("word.application")                              'ouvre session word
        Set WordDoc = AppWord.Documents.Open("E:\Essai Excel vers Word.docm")       'ouvre document Word Attention au chemin!!
        AppWord.Visible = True 'word affiché pendant l'operation
        For i = 1 To 50
            Range("TABLEAU" & i).Copy
            'les signets du document Word sont nommés Tableau1, Tableau2
            WordDoc.Bookmarks("Tableau" & i).Range.Select
            AppWord.Selection.Paste
        Next i
     
        AppWord.Visible = True 'affiche le document Word
        WordDoc.Close False 'ferme le document word en sauvegardant les données
        'AppWord.Quit 'ferme la session Word
    End Sub
    Je voudrais qu'à la fin du traitement le document word s'ouvre et reste visible

    Merci

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La procédure que j'ai développée fonctionne avec côté Excel une cellule ou plage de cellules nommée (Gestionnaire des noms) et côté Word un signet
    Autrement dit, si tu as un signet qui se nomme Adresse dans le document qui te sert de modèle, tu dois avoir une cellule ou une plage (si tableau) nommée Adresse.
    Si le signet n'existe pas dans Word, la fonction renvoie False dans le cas contraire True

    Code de la procédure
    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
    Function CopyXls2Wrd(wrdDoc As Word.Document, oName As Name) As Boolean
      ' Philippe Tulliez www.magicoffice.be
      ' Copie la cellule ou plage de cellules définie par l'argument oName
      '   Renvoie True si la copie a bien eu lieu
      ' Arguments
      '   wrdDoc   ' Document qui contient le signet qui contiendra la ou les cellules copiées dans Excel
      '   oName    ' Nom de la cellule ou plage de cellules à copier (Le signet doit avoir le même nom)
      Dim oRng As Range
      Dim Place As Long
      Dim BookmarkName As String
      Dim appWrd As Word.Application
      Set appWrd = wrdDoc.Parent
      Set oRng = oName.RefersToRange ' Objet Range à copier
      ' Place = wrdDoc.Bookmarks(BookmarkName).Range.Start
      BookmarkName = oName.Name
      With wrdDoc
        If .Bookmarks.Exists(BookmarkName) Then
           If oRng.Count = 1 Then
              .Bookmarks(BookmarkName).Range.Text = oRng.Text
            Else
              oRng.Copy
              .Bookmarks(BookmarkName).Select
              appWrd.Selection.PasteSpecial DataType:=9, Placement:=0
              Application.CutCopyMode = False
           End If
           CopyXls2Wrd = True
        End If
      End With
      Set appWrd = Nothing: Set oRng = Nothing
    End Function
    Donc si je me réfère au code que tu as publié, voici la ligne de code pour invoquer cette procédure CopyXls2Wrd WordDoc, ThisWorkbook.Names("Contact") en copiant la cellule nommée Contact vers le signet de même nom.

    Voici ma procédure de test qui invoque la fonction CopyXls2Wrd. Le document Word, reste ouvert et n'est pas sauvé
    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
    Sub T()
      ' Nécessite de référencer Microsoft Word nn.n Object Library
      ' Déclaration
      Const SubFolder As String = "Template"          ' Sous-répertoire où se trouve le modèle
      Const TemplateName As String = "Courrier.Docx"  ' Nom du modèle
      Dim appWrd As Word.Application
      Dim wrdDoc As Word.Document
      Dim appPath As String, wrdFullName As String
      '
      appPath = ThisWorkbook.Path
      wrdFullName = appPath & "\" & SubFolder & "\" & TemplateName
      Set appWrd = CreateObject("Word.Application")
      Set wrdDoc = appWrd.Documents.Add(Template:=wrdFullName)
      '
      With appWrd
      .Visible = True:  appWrd.Activate
      End With
      '
      ' Copie des cellules et plages de cellules vers les signets
      CopyXls2Wrd wrdDoc, ThisWorkbook.Names("bmOffre")
      CopyXls2Wrd wrdDoc, ThisWorkbook.Names("bmName")
      '
      Set appWrd = Nothing: Set wrdDoc = Nothing
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juillet 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2015
    Messages : 13
    Par défaut re copie tableau excel
    Bonjour,

    Je ne comprends pas pourquoi dans la déclaration des variables il me met une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub T()
     
    Dim appWrd As Word.Application
    merci

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,

    Et bien tout simplement parce-que le complément Word n'est pas référencé.
    C'est pourtant indiqué en début de procédure 'Nécessite de référencer Microsoft Word nn.n Object Library
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. [XL-365] Copie de cellules Excel vers un document Word
    Par Guiggs dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/12/2019, 09h10
  2. [WD-2002] Extraction de données d'un tableur excel vers un document Word
    Par Vincent32 dans le forum VBA Word
    Réponses: 6
    Dernier message: 21/10/2010, 18h32
  3. tableau excel dans un document word
    Par vincent0303 dans le forum VBA Word
    Réponses: 0
    Dernier message: 17/08/2010, 16h04
  4. Passage d'un tableau excel vers un document word
    Par tasse2the dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/09/2009, 17h14
  5. Réponses: 2
    Dernier message: 24/10/2007, 11h44

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