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

  1. #1
    Candidat au Club
    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
    Points : 4
    Points
    4
    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 habitué
    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
    Points : 195
    Points
    195
    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
    Candidat au Club
    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
    Points : 4
    Points
    4
    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 habitué
    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
    Points : 195
    Points
    195
    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
    Candidat au Club
    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
    Points : 4
    Points
    4
    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 habitué
    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
    Points : 195
    Points
    195
    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

  7. #7
    Candidat au Club
    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
    Points : 4
    Points
    4
    Par défaut
    Bonjour Elise

    Grâce à votre aide, j'ai pu corriger la macro que j'utilise
    La voici ci dessous.

    En revanche, en exécutant, j'ai un message d'erreur sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .MailAddressFieldName = "Mail"
    En fait, ma macro excel se situe dans un doc excel qui sert de base de données aux mots clés que je veux changer dans le mail publiposté. L'exemple type du mail publiposté est lui situé dans un doc word (dans lequel j'ai crée un publipostage manuel à l'aide de l'onglet "Publipostage")
    Les adresses mail sont situés dans la base de données excel avec comme titre de colonne "Mail"

    mais cela ne semble pas fonctionner avec le code ci dessous

    Merci bcp pour votre aide précieuse...


    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
    Sub Pulbiv3()
     
     
        'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
        Dim docWord As Object
        Dim appWord As Object
        Dim NomBase As String
     
        NomBase = "C:\Documents and Settings\e.level\Bureau\Publipostage\base de donnée.xlsm"
     
        Application.ScreenUpdating = False
        Set appWord = CreateObject("Word.Application")
        appWord.Visible = True
        'Ouverture du document principal Word
        Set docWord = appWord.Documents.Open("C:\Documents and Settings\e.level\Bureau\Publipostage\Template v2.docx")
     
        'fonctionnalité de publipostage pour le document spécifié
     
           With docWord.MailMerge
            .MailAddressFieldName = "Mail" '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
     
     
     
     
        Application.ScreenUpdating = True
     
        'Fermeture du document Word
        docWord.Close False
        appWord.Quit
     
     
     
    End Sub

  8. #8
    Membre habitué
    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
    Points : 195
    Points
    195
    Par défaut
    Bonjour,

    En fait, même si on commence sa macro depuis le classeur source, Word, lui, n'a pas établit la liaison avec sa source !

    Pour tester qu'il n'a pas sa liaison, on peut écrire en ligne 16 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox docWord.MailMerge.DataSource.Name
    Il va faire une pop-up toute vide !

    Il faut donc le lui dire : En ligne 20, avant de spécifier le nom du champ, il faut écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .OpenDataSource Name:=NomBase, _
                Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
                "DBQ=" & NomBase & "; ReadOnly=True;", _
                SQLStatement:="SELECT * FROM [Feuil1$]"
    Et là, si on refaire la msgbox, il donne bien le nom !

    Désolée, j'aurais dû le spécifier avant... je pars rarement d'excel pour faire du publipostage...

    Et c'est là que ça devrait normalement fonctionner... ou au moins avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Destination = wdSendToNewDocument
    Mais chez moi, ça ne fonctionne pas... sorry... approfondis l'écriture de la source... je suppose...

    Sinon... pourquoi ne pars tu pas d'un code sur Word ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub PublipostageDepuisWord()
     
        With ActiveDocument.MailMerge
            .MailAddressFieldName = "Adresse"
            .MailSubject = "Offre promotionnelle"
            .Destination = wdSendToEmail
    '        With .DataSource
    '            .FirstRecord = wdDefaultFirstRecord
    '            .LastRecord = wdDefaultLastRecord
    '        End With
            .Execute
        End With
     
    End Sub
    Bon courage
    Elise

  9. #9
    Candidat au Club
    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
    Points : 4
    Points
    4
    Par défaut
    Pourquoi pas lancer la macro depuis word mais si je mets comme code vba dans word le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub PublipostageDepuisWord()
     
        With ActiveDocument.MailMerge
            .MailAddressFieldName = "Adresse"
            .MailSubject = "Offre promotionnelle"
            .Destination = wdSendToEmail
    '        With .DataSource
    '            .FirstRecord = wdDefaultFirstRecord
    '            .LastRecord = wdDefaultLastRecord
    '        End With
            .Execute
        End With
     
    End Sub
    Il ne se passe rien...

    Merci pour votre aide

  10. #10
    Candidat au Club
    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
    Points : 4
    Points
    4
    Par défaut
    Bonjour ,

    Quelqu'un aurait il des pistes s'il vous plait?
    merci bcp pour votre aide

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