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

VBA Word Discussion :

Exportation de données excel sur word avec macro adaptée au changement de ligne


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2022
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mai 2022
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Exportation de données excel sur word avec macro adaptée au changement de ligne
    Bonjour,

    Je suis novice en macro vba et j'ai une tâche à effectuer qui en requiert une. Cela fait des jours que je parcours les forums pour trouver une solution... sans succès.
    Comme indiqué dans le titre, j'utilise une macro vba (trouvée sur le net) qui me permet de remplir un document word (dont les signets ont été définis au préalable) à partir d'informations contenues dans une feuille excel.

    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
     
     
    Sub Act()
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
    Dim i As Byte
     
        Set WordApp = CreateObject("word.application")    'ouvre une session Word
        Set WordDoc = WordApp.Documents.Open("C:\Users\...docx")    'ouvre le document Word
        WordApp.Visible = False    'Word est masqué pendant l'opération
     
    WordDoc.Bookmarks("Info1").Range.Text = Range("a2").Value
    WordDoc.Bookmarks("Civilité1").Range.Text = Range("b2").Value
    WordDoc.Bookmarks("Nom1").Range.Text = Range("c2").Value
    WordDoc.Bookmarks("Prénom1").Range.Text = Range("d2").Value
    WordDoc.Bookmarks("Adresse1").Range.Text = Range("e2").Value
     
    WordDoc.ExportAsFixedFormat OutputFileName:= _
            "_" & ".pdf", ExportFormat:= _
            17, OpenAfterExport:=True, OptimizeFor:= _
            0, Range:=0, From:=1, to:=1, _
            Item:=0, IncludeDocProps:=True, KeepIRM:=True, _
            CreateBookmarks:=0, DocStructureTags:=True, _
            BitmapMissingFonts:=True, UseISO19005_1:=False
     
    WordDoc.Close savechanges:=False
    WordApp.Quit  
     
    End Sub
    Cette macro fonctionne très bien pour la ligne définie. Mais j'aimerai la "dupliquer" pour qu'elle fonctionne sur chaque ligne (dont les cellules sont différentes). Ma première idée est de créer autant de modules que de lignes (max 99) mais c'est fastidieux et lourd (d'autant que par la suite j'ai d'autres docs word à remplir avec d'autres informations). Ma deuxième idée est d'insérer un double clic sur une cellule de la ligne que je veux utiliser pour remplir mon word mais :
    1/ je ne sais pas insérer ce double clic malgré ce que j'ai trouvé comme instructions pour cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Option Explicit
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Selection.Count = 1 Then
            If Not Intersect(Target, Range("D4")) Is Nothing Then
                Call MyMacro
            End If
        End If
    End Sub
    2/ Je ne parviens pas à trouver le moyen de modifier ma macro pour avoir à la place de Range("a2").Value quelque chose qui permet d'avoir l'information contenue dans la colonne A et sur la ligne où a été effectué le double-clic.

    Merci pour votre aide !

  2. #2
    Membre éclairé Avatar de Souriane
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2009
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2009
    Messages : 541
    Points : 758
    Points
    758
    Par défaut
    Bonjour,

    Voici comment modifier la macro pour qu'il prenne la ligne courante.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    WordDoc.Bookmarks("Info1").Range.Text = ActiveCell.Value
    WordDoc.Bookmarks("Civilité1").Range.Text = ActiveCell.Offset(0, 1).Value 'Si le curseur était au départ dans A1, il va lire le contenu de A2
    WordDoc.Bookmarks("Nom1").Range.Text = ActiveCell.Offset(0, 2).Value  'Si le curseur était au départ dans A1, il va lire le contenu de A3, etc.
    WordDoc.Bookmarks("Prénom1").Range.Text = ActiveCell.Offset(0, 3).Value
    WordDoc.Bookmarks("Adresse1").Range.Text = ActiveCell.Offset(0, 4).Value
    Tu pourrais attribuer un raccourci clavier à la macro pour pouvoir l'appeler au besoin.

    Sinon, pourquoi ne pas faire du publipostage à partir de Word?

    Souriane
    __________________________________
    Une question bien posée est à moitié résolue!

    Merci de ne pas oublier de mettre RÉSOLU quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/11/2017, 17h59
  2. Export de tableaux Excel sur Word
    Par Wenth dans le forum Général VBA
    Réponses: 1
    Dernier message: 09/07/2014, 22h07
  3. Données Excel vers Word avec critères précis
    Par Z20500 dans le forum Excel
    Réponses: 4
    Dernier message: 18/09/2007, 18h38
  4. [VBA-E] Exporter des données Excel dans Word
    Par lucarno dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/08/2007, 19h25

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