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 :

Macro publipostage 1 fichier par enregistrement [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Macro publipostage 1 fichier par enregistrement
    Bonjour à tous,

    J'ai un problème avec une macro qui fait un publipostage à partir de données sous excel vers un modèle word.
    Je souhaiterait obtenir un 1 fichier par ligne excel et l'enregistrer sous le nom de la colonne A. (ex: si ma cellule A1 =Paris alors mon fichier s'enregistre sous le nom "Paris")

    Est-ce possible?

    Voici ma macro:

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    Option Explicit
     
    Public Const wdDefaultFirstRecord = 1
    Public Const wdDefaultLastRecord = -16
     
     
    Sub Publipostage()
    Dim Base As String, Model As String, Fiche As String, Rep As String
    Dim WordApp As Object ' Word.Application
    Dim WordDoc As Object ' Word.Document
     
        Application.ScreenUpdating = False
     
        Base = ActiveWorkbook.Path & "\Liste LignesTEST.xlsm"
        Model = ActiveWorkbook.Path & "\Fiche modèle ADSL.docx"
        Rep = ActiveWorkbook.Path & "\Fiches ADSL\"
        If Not ExisteRep(Rep) Then MkDir Rep
     
     
     
        ' Mise à jour du fichier de données Excel
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs Filename:="D:\MACRO\Liste LignesTEST.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
        Application.DisplayAlerts = True
     
        Set WordApp = CreateObject("Word.Application")
        WordApp.Visible = False
        Set WordDoc = WordApp.Documents.Open(Model, ReadOnly:=False)
        With WordDoc.MailMerge
        'Ouvre la base
            .OpenDataSource Name:=Base, Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
                "DBQ=" & Base & "; ReadOnly=True;", SQLStatement:="SELECT * FROM [ADSL$]"
            .suppressBlankLines = True
            With .DataSource
                .FirstRecord = wdDefaultFirstRecord
                .LastRecord = wdDefaultLastRecord
            End With
        'Exécute l'opération de publipostage
            .Execute Pause:=False
        End With
        Fiche = Rep & "Fiche ADSL_" & Range("$A2")
        WordDoc.Application.ActiveDocument.SaveAs Fiche
        'WordApp.Application.Quit
        WordDoc.Close
        WordApp.Quit
        Application.ScreenUpdating = True
        MsgBox "Fiches ADSL créées"
        'Ouvre le répertoire
        Shell "c:\windows\explorer.exe D:\MACRO\Fiches ADSL", vbNormalFocus
    End Sub
     
     
    Function ExisteRep(Model As String) As Boolean
        On Error Resume Next
        ExisteRep = GetAttr(Model) And vbDirectory
    End Function
    Cordialement,

  2. #2
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour à tous,

    Je ne trouve toujours pas la solution, pourriez vous m'aider.

    Cordialement,

  3. #3
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 417
    Points : 16 260
    Points
    16 260
    Par défaut
    Bonjour

    La solution la plus simple est de découper le document unique résultant à chaque saut de section.

    Il doit y avoir des codes dans la section Word je crois.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  4. #4
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    J'ai fait autrement j'ai créé un bouton par ligne.

    Cordialement,

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

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