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 :

Publipostage VBA (depuis excel vers outlook)


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
    Inscrit en
    Septembre 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 19
    Par défaut Publipostage VBA (depuis excel vers outlook)
    Bonjour à tous

    Je sollicite votre aide car j'aimerais pouvoir automatiser un publipostage depuis une base de données excel via un document word pour envoyer in fine un email.

    Avec les aides sur Internet, j'ai pu créer " manuellement" un publipostage dans word mais j'aimerais qu'en cliquant sur un bouton dans excel on puisse lancer automatiquement le publipostage.

    J'utilise le code suivant mais cela ne fonctionne pas:
    Il affiche une erreur à cette ligne "ActiveDocument.MailMerge.OpenDataSource Name"

    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 Publiv2()
    Dim docWord As Object
    Dim appWord As Object
     
    ' Démarrer Word
        Set WordApp = CreateObject("word.application")
    With WordApp.Visible = True
        'Ouverture du document principal Word
        Set docWord = WordApp.Documents.Open("C:\Documents and Settings\e.level\Bureau\Publipostage\Template v2.docx")
     
    ActiveDocument.MailMerge.OpenDataSource Name:="C:\Documents and Settings\e.level\Bureau\Publipostage\base de donnée.xlsx"
     
          ' Diriger le publipostage vers un nouveau document
         ActiveDocument.MailMerge.Execute
    End With
     
    ' Fermer et libérer les objets
    Set wdApp = Nothing
    End Sub
    Merci bcp pour votre aide

  2. #2
    Membre éprouvé
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 174
    Par défaut
    Bonjour,

    Essaie de modifier

    ActiveDocument

    par

    docWord

    Tu as affecté un nom (une variable) à ton document, autant t'en servir...

    A+
    Elise

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 19
    Par défaut
    En changeant ActiveDocument par docWord il n'y a plus d'erreur mais aucun mail n'est envoyé
    J'ai fais un test et je ne reçois aucun mail...
    Merci pour votre aide

  4. #4
    Membre éprouvé
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 174
    Par défaut
    Ds ton code,l'envoi par mail n'est pas précisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docWord.MailMerge.Destination = wdSendToEmail
    reprends le tutoriel suivant ... tu trouveras sans doute ta réponse

    http://heureuxoli.developpez.com/off...postage/#LIV-D

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 19
    Par défaut
    OUi , c'est à partir de ce tuto que j'ai essayé de construire mon code, mais je ne comprend pas très bien (je débute...)
    J'ai essayé de remplacer ".execute" par docWord.MailMerge.Destination = wdSendToEmail


    La macro que j'utilise est la suivante:

    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
    Sub Publiv2()
    Dim docWord As Object
    Dim appWord As Object
     
    ' Démarrer Word
        Set WordApp = CreateObject("word.application")
    With WordApp.Visible = True
        'Ouverture du document principal Word
        Set docWord = WordApp.Documents.Open("C:\Documents and Settings\e.level\Bureau\Publipostage\Template v2.docx")
     
    docWord.MailMerge.OpenDataSource Name:="C:\Documents and Settings\e.level\Bureau\Publipostage\base de donnée.xlsm"
     
          ' Diriger le publipostage vers un nouveau document
     
     
         docWord.MailMerge.Destination = wdSendToEmail
    End With
     
    ' Fermer et libérer les objets
    Set wdApp = Nothing
     
      docWord.Close False
        WordApp.Quit
     
    End Sub
    semble fonctionner car il n'y a pas de bug mais les mails n'ont pas l'air d’être envoyés...

    Cela vient il du code ?
    merci bcp !!

  6. #6
    Membre éprouvé
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 174
    Par défaut
    Bonjour,

    Les lignes de codes s'ajoutent les unes aux autres... chacune a son intérêt, et il ne faut pas les substituer les unes aux autres ...

    Il faut donc précisr ds la macro les éléments suivants :
    - le destinataire
    - le sujet du mail
    - le type de destination (donc pour toi = outlook : wdSendToEmail)

    - préciser la ligne de début
    - préciser la ligne de fin

    - exécuter


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
       With docWord.MailMerge
            .MailAddressFieldName = "Email" 'correspond au nom du champ contenant les adresses mail
            .MailSubject = "Offre promotionnelle" 'correspond au sujet de ton mail
            .Destination = wdSendToEmail
     
    'Ces lignes sont facultatives SI 1 ligne = 1 envoi, et que l'on fait toute la Base de données
    'Sinon,il faut modifier le code... 
            With .DataSource
                .FirstRecord = wdDefaultFirstRecord
                .LastRecord = wdDefaultLastRecord
            End With
     
            .Execute
        End With
    Bon courage !
    Elise

Discussions similaires

  1. publipostage depuis access vers outlook erreur
    Par petitours dans le forum Word
    Réponses: 1
    Dernier message: 25/01/2014, 17h01
  2. Publipostage Word depuis Excel avec datasource = fichier macro vba
    Par julac dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/11/2012, 14h58
  3. [XL-2010] Export VBA depuis Excel d'un CSV vers TT Access existante
    Par loki dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/11/2011, 13h55
  4. VBA -Copier cellules Excel vers outlook
    Par Rdesfx dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/11/2008, 16h29
  5. Vba excel vers outlook
    Par maejor dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/01/2008, 17h53

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