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 :

Publipostage Word generer 2 types de lettres


Sujet :

VBA Word

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 39
    Points
    39
    Par défaut Publipostage Word generer 2 types de lettres
    Bonjour,
    J'ai un souci de publipostage
    Cette macro permet de récupérer les données Excel et de générer un document word pour chaque ligne du tableau d'excel
    je souhaiterais pouvoir enregistrer en fonction d'un critère dans les données excel X lettres dans un fichier word et X lettres dans un autre fichier word.
    Vous auriez des pistes
    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
     
     
    Sub donneeAvecExcel()
    'Déclaration des variables
    Dim xlApp As Excel.Application
    Dim xlWb As Excel.Workbook
    Dim xlSh As Excel.Worksheet
    Dim iR As Integer
    Dim i As Integer, j As Integer
    Dim oDoc As Document
     
     
     
    'Affectation des données aux variables
    Set xlApp = New Excel.Application
    Set xlWb = xlApp.Workbooks.Open("C:\Documents and Settings\Olivier\Mes documents\Mes sources de données\adresses.xlsx")
    Set xlSh = xlWb.Worksheets(1)
    'Récupération du nombre de lignes et de colonnes
    iR = xlSh.UsedRange.Rows.Count
     
    ' Récupération des données de la feuille pour les injecter dans le document.
    For i = 2 To iR
        Debug.Print xlSh.Cells(iR, 2); iR
            Set oDoc = Documents.Add("C:\Documents and Settings\Olivier\Application Data\Microsoft\Templates\pub.dotm")
            oDoc.Bookmarks(1).Range.Text = xlSh.Cells(i, 1)
            oDoc.Bookmarks(2).Range.Text = xlSh.Cells(i, 2)
            oDoc.Bookmarks(3).Range.Text = xlSh.Cells(i, 3)
            oDoc.SaveAs "c:\temp\" & xlSh.Cells(i, 2) & "-" & Format(Date, "yy-mm-dd") & ".docx"
            oDoc.Close
            Set oDoc = Nothing
    Next i
     
    xlWb.Close
    xlApp.Quit
    Set xlSh = Nothing
    Set xlWb = Nothing
    Set xlApp = Nothing
     
    End Sub

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Sans avoir testé, tu ajoutes une colonne "Fichier Word" dans ta feuille Excel et tu identifies ton fichier par 1 ou 2, a ou b etc. L'avantage c'est que tu n'est pas limité à deux choix.

    Ensuite avec la requête qui va bien tu fais deux impressions distinctes, soit en lançant deux fois ta macro actuelle, soit en modifiant ta macro actuelle pour qu'elle traite deux objets documents distincts dans une seule passe.

    Si tu n'as pas la possibilité d'ajouter une colonne dans ta feuille Excel, et que tu veux une passe unique avec deux documents, tu vas devoir bâtir ta requête en fonction de tes colonnes actuelles et de ce qui doit "séparer" les deux documents.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 39
    Points
    39
    Par défaut Ok mais
    Je te remercie de ces pistes, je sais qu'il faut travailler le fichier pour les critères excel...
    Mon principal problème c'est que le code de la macro génère un fichier Word par ligne, moi je souhaiterais pouvoir mettre tous les documents dans le meme fichier Word.

    En fait comme un publipostage, mais en maîtrisant les données excel.

    En fait le besoin c'est de pouvoir generer deux types de courrier différents, et de pouvoir insérer en cas de doublon un champ supplémentaires sur la lettre. Aujourd'hui la seul methode c'est de faire un publipostage par courrier, et un publipostage conditionnel pour l'histoire des doublons, du coup beaucoup de manip...

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Le code sert à avoir un document par ligne.

    Ce que tu souhaites, c'est trier les données dans Word ?

    il est plus facile de le faire en amont, on trie les données avant dans le base de données et on les traite ensuite.
    Si on suit ta demande, comment va se comporter Word avec par exemple

    A
    A
    B
    A
    A
    B
    B
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 39
    Points
    39
    Par défaut Alors
    Ce que je souhaite, c'est pas de trier les données Word,
    C'est en premier lieu, pouvoir mettre x courriers dans 1 document Word,
    la macro actuelle créé 1 courrier pour 1 document word.

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Dans ce cas, c'est un publipostage simple que tu dois faire.
    Le code que tu utilises est fait pour générer un document par enregistrement, ce qui n'est pas prévu dans Word.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 39
    Points
    39
    Par défaut Ok
    Je vous remercie pour vos conseils

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

Discussions similaires

  1. [VBA-W]publipostage word
    Par nagdrir dans le forum VBA Word
    Réponses: 12
    Dernier message: 30/04/2006, 14h05
  2. requete et publipostage word
    Par fenua hao dans le forum Access
    Réponses: 1
    Dernier message: 20/03/2006, 11h39
  3. migration Access2000 -> 2003 pb de publipostage word
    Par zoungern dans le forum Access
    Réponses: 1
    Dernier message: 15/11/2005, 16h54
  4. publipostage word?
    Par say dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 10/06/2005, 16h42
  5. [word] Generer un document avec des champs
    Par webbulls dans le forum Bases de données
    Réponses: 3
    Dernier message: 29/04/2004, 10h47

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