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 : sujet et nom PJ variable


Sujet :

VBA Word

  1. #1
    Membre du Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    Points : 58
    Points
    58
    Par défaut Publipostage : sujet et nom PJ variable
    bonjour

    je cherche à faire un publipostage Word à partir d'une base de données Excel
    Mon fichier Word est déjà configuré avec champs de fusion adaptant le contenu du fichier selon les critères choisis.

    j'utilise une macro VBA situé dans un module de mon fichier modèle word et la fonction mailmerge .wdsendtomail

    j'ai deux questions :
    1° Adapter l'objet du mail en fonction du nom de la personne (champs nom et prénom de la base)
    dans mon code ci-dessous j'ai fait une boucle for next mais on doit pouvoir faire plus simple


    2° adapter le nom de la pièce jointe pour qu'il inclut nom et prénom de la personne

    ci-dessous le code, récupéré sur internet , et que j'ai commencé à adapter à mes besoins

    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
     
    Sub envoi()
        'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
        Dim docWord As Word.Document
        Dim appWord As Word.Application
        Dim NomBase As String
        Dim ObjetMail As String
        Dim n As Integer
        'NomBase = "C:\dossier\labase.xls"
     
        Application.ScreenUpdating = False
        Set appWord = Word.Application
        'Set appWord = New Word.Application    'Ouverture du document principal Word
        Set docWord = ThisDocument
     
        'fonctionnalité de publipostage pour le document spécifié
     
      For n = 1 To 1
        With docWord.MailMerge
            'Ouvre la base de données
            '.OpenDataSource Name:=NomBase, _
                Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
                "DBQ=" & NomBase & "; ReadOnly=True;", _
                SQLStatement:="SELECT * FROM [Feuil1$]"
     
            'Spécifie la fusion vers email
            .Destination = wdSendToEmail
     
            .SuppressBlankLines = True
                'Prend en compte l'ensemble des enregistrements
                With .DataSource
                    '.FirstRecord = wdDefaultFirstRecord
                    '.LastRecord = wdDefaultLastRecord
                    .FirstRecord = n
                    .LastRecord = n
                    .ActiveRecord = n
                End With
            ObjetMail = "Support entretien " & .DataSource.DataFields("Prénom") & " " & .DataSource.DataFields("Nom").Value
     
            .MailSubject = ObjetMail
            ' si true fichier en PJ, si false fichier dans corps message
            .MailAsAttachment = True
            'Exécute l'opération de publipostage
            .Execute Pause:=False
     
        End With
     Next n
     
        Application.ScreenUpdating = True
     
        'Fermeture du document Word
        'docWord.Close False
        'appWord.Quit
    End Sub
    d'avance merci à ceux qui pourront m'aider

  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,



    Citation Envoyé par Phileo Voir le message
    bonjour

    je cherche à faire un publipostage Word à partir d'une base de données Excel
    Mon fichier Word est déjà configuré avec champs de fusion adaptant le contenu du fichier selon les critères choisis.

    j'utilise une macro VBA situé dans un module de mon fichier modèle word et la fonction mailmerge .wdsendtomail

    j'ai deux questions :
    1° Adapter l'objet du mail en fonction du nom de la personne (champs nom et prénom de la base)
    dans mon code ci-dessous j'ai fait une boucle for next mais on doit pouvoir faire plus simple
    À vrai dire, je travaillerais plutôt en amont et j'ajouterais une colonne "Objet" au fichier Excel. Cela permettrait de modifier le choix d' "objets" sans refaire le code. Si, par exemple, un bon matin, tu décides de "séparer" Support entretien en Support logiciel et en Réparation; tu aurais juste à l'écrire différemment dans ton fichier excel, au lieu de réécrire ton code. Et puis, si un jour tu veux écrire juste à ceux qui veulent une réparation, tu pourras adapter ta requête SQL pour sortir juste les réparations, au lieu de toute la liste avec des vérifications dans ta macro avant d'envoyer ou non.


    2° adapter le nom de la pièce jointe pour qu'il inclut nom et prénom de la personne
    En principe, si ta pièce jointe c'est un fichier, cela te prendrait une concaténation dans ce genre-là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\clients\" & .DataSource.DataFields("Prénom") & " " & .DataSource.DataFields("Nom") & ". + extension"
    À 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
    Membre du Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    Points : 58
    Points
    58
    Par défaut
    merci pour ces éléments
    je vais travailler dans ce sens

Discussions similaires

  1. [VB.Net] Créer dynamiquement un nom de variable
    Par chuck_m dans le forum ASP.NET
    Réponses: 5
    Dernier message: 20/07/2005, 15h08
  2. Nom de variable dans une autre variable
    Par lsdInside dans le forum Linux
    Réponses: 5
    Dernier message: 04/12/2004, 19h36
  3. [SQL SERVER 2000] Noms de variables dynamiques
    Par cassoulet dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 08/09/2004, 11h44
  4. Nom de variable
    Par lilia dans le forum Flash
    Réponses: 4
    Dernier message: 07/08/2004, 13h11
  5. Generer des noms de variables avec une boucle
    Par moutanakid dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/07/2004, 17h45

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