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

Outlook Discussion :

Macros pour envoi de mail [OL-2007]


Sujet :

Outlook

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Macros pour envoi de mail
    Bonjour,

    Je cherche à créer une macro pour automatiser un envoie de mail. Je m'explique, j'ai un fichier word qui contien le message dans un format précis et j'aimerais envoyer le message en tant que corps du mail à des destinataires précis. J'ai déja un macros sur le fichier word qui fait quelques fonctionnement et qui copie le tout en presse papier. J'aimerais donc maintenant créer une macro va coller ce qui est sur le presse papier et remplir les champs From, To, Objet, CC et CCI

    voilà le code que j'ai testé :

    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
     
    Sub TestMail()
     
    Dim AdresseFrom As String, AdresseDest As String, CCI As String, CC As String
    Dim Sujet As String, Corps As String
     
    Set ol = CreateObject("outlook.application")
    Set myItem = ol.CreateItem(olMailItem)
     
    AdresseFrom = "Ax"
    AdresseDest = "Ax"
    CC = "Ax"
    CCI = "Ax"
    Sujet = "Test"
     
    myItem.To = AdresseDest
    myItem.SentOnBehalfOfName= "Ax@Google.com"
    myItem.Subject = Sujet
    myItem.CC = CC
    myItem.BCC = CCI
    myItem.Body= Paste
     
    myItem.Display ' c'est ICI la méthode Display
     
    Set ol = Nothing
    Set myItem = Nothing
    End Sub
    et là je ne sais pas de message collé sur le corps du Mail... est ce que quel qu'un a une idée ..

    Merci de votre aide.

  2. #2
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Pourquoi utiliser un copier coller et ne pas prendre directement le contenu du fichier 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Sub TestMail()
     
    Dim AdresseFrom As String, AdresseDest As String, CCI As String, CC As String
    Dim Sujet As String, Corps As String
    Dim wdapp As Word.Application
     
    Set ol = CreateObject("outlook.application")
    Set myItem = ol.CreateItem(olMailItem)
    Set wdapp = Word.Application
     
    AdresseFrom = "Ax"
    AdresseDest = "Ax"
    CC = "Ax"
    CCI = "Ax"
    Sujet = "Test"
     
    myItem.To = AdresseDest
    myItem.SentOnBehalfOfName = "Ax@Google.com"
    myItem.Subject = Sujet
    myItem.CC = CC
    myItem.BCC = CCI
    myItem.Body = wdapp.Documents(1).Range.Text
     
    myItem.Display ' c'est ICI la méthode Display
     
    Set ol = Nothing
    Set myItem = Nothing
    set wdapp=Nothing
    End Sub
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,
    Merci pour votre réponse.

    Mais d’après mes tests, le mail contient bien le message du fichier Word mais pas au même format (les images ne sont pas présents, la couleur des textes ne sont pas gardé, ni les gras ou italique etc)

    et le pattern est très important d'ou mon idée de copier/coller.

  4. #4
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Il faut utiliser l'éditeur Word pour formater les messages, quelque chose de ce style.
    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
    Sub TestMail()
     
    Dim AdresseFrom As String, AdresseDest As String, CCI As String, CC As String
    Dim Sujet As String, Corps As String
    Dim wdapp As Word.Application
    Dim myitem As MailItem
    Dim worddoc As Document
     
    Set ol = CreateObject("outlook.application")
    Set myitem = ol.CreateItem(olMailItem)
    Set wdapp = Word.Application
     
    AdresseFrom = "Ax"
    AdresseDest = "Ax"
    CC = "Ax"
    CCI = "Ax"
    Sujet = "Test"
     
    myitem.To = AdresseDest
    myitem.SentOnBehalfOfName = "Ax@Google.com"
    myitem.Subject = Sujet
    myitem.CC = CC
    myitem.BCC = CCI
    wdapp.Documents(1).Content.Copy
     
    Set worddoc = myitem.GetInspector.WordEditor
    worddoc.Range.PasteAndFormat wdFormatOriginalFormatting
    myitem.Display ' c'est ICI la méthode Display
     
    Set ol = Nothing
    Set myitem = Nothing
    Set wdapp = Nothing
    End Sub
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Je ne connais pas beaucoup VB et j'essaie de me débrouiller avec le peu que je sais et là, j'ai un message d'erreur avec le nouveau code et je ne sais pas pourquoi...

    Sinon dans l'idée, il n'y a pas moyen de juste coller dans le corps du message ?

    Parce que la demande exacte c'est d'envoyer exactement le fichier word en corps du mail (et donc au passage supprimer la signature qui est inseré automatiquement...)

    sinon, dans le pire des cas, il y a possibilité de faire une macro sur Outlook et non sur Word qui fais que remplir tout les champs..

    Merci

  6. #6
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Ton erreur porte sur quelle ligne?
    Ce code est fait dans le cas où ton document Word est ouvert. SInon, il faut utiliser la fonction open et créer une application Word.
    C'est possible de récupérer le contenu des champs effectivement mais sans plus de détails ca va être compliqué.
    Utiliser la fonction Clipboard du presse papier pourrait effectivement être une alternative, pour cela il faut utiliser les API Windows.
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    J'ai un probleme dans

    la ligne 6 : Dim myitem As MailItem et l'erreur c'est "Type définie par l'utilisateur non défini. "

    Sinon voila ce que j'ai trouvé pour utiliser le clipboard mais j'ai exactement le même erreur avec la ligne Dim MyData As DataObject :

    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
     
    Sub TestMail()
     
    Dim AdresseFrom As String, AdresseDest As String, CCI As String, CC As String
    Dim Sujet As String, Corps As String
    Dim MyData As DataObject
     
    Set ol = CreateObject("outlook.application")
    Set myitem = ol.CreateItem(olMailItem)
    Set MyData = New DataObject
     
    AdresseFrom = "Ax"
    AdresseDest = "Ax"
    CC = "Ax"
    CCI = "Ax"
    Sujet = "Test"
     
    myitem.To = AdresseDest
    myitem.SentOnBehalfOfName = "Ax@Google.com"
    myitem.Subject = Sujet
    myitem.CC = CC
    myitem.BCC = CCI
    myitem.Body = MyData.GetFromClipboard()
     
     
    myitem.Display ' c'est ICI la méthode Display
     
    Set ol = Nothing
    Set myitem = Nothing
     
    End Sub

  8. #8
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Effectivement, il faut mettre Object sur de la programmation en LateBinding autant pour moi.
    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
    Sub TestMail()
     
    Dim AdresseFrom As String, AdresseDest As String, CCI As String, CC As String
    Dim Sujet As String, Corps As String
    Dim wdapp As Object 
    Dim myitem As Object
    Dim worddoc As Object
    dim outlookwordeditor as Object 
    
    Set ol = CreateObject("outlook.application")
    Set myitem = ol.CreateItem(olMailItem)
    Set wdapp = CreateObject("Word.Application")
    Set worddoc=wdapp.documents.open ("c:\nomfic.doc") 
    AdresseFrom = "Ax"
    AdresseDest = "Ax"
    CC = "Ax"
    CCI = "Ax"
    Sujet = "Test"
     
    myitem.To = AdresseDest
    myitem.SentOnBehalfOfName = "Ax@Google.com"
    myitem.Subject = Sujet
    myitem.CC = CC
    myitem.BCC = CCI
    worddoc.Content.Copy
    
    Set outlookwordeditor = myitem.GetInspector.WordEditor
    outlookwordeditor.Range.PasteAndFormat wdFormatOriginalFormattingmyitem.Display ' c'est ICI la méthode Display
     
    worddoc.close
    wdapp.quit
    Set ol = Nothing
    Set myitem = Nothing
    
    set outlookwordeditor = Nothing
    Set worddoc = Nothing
    set wdapp = Nothing
    
    
    End Sub
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Cette solution avec le chemin relatif du document ne peux pas fonctionner car le macros doit être utilisable par plusieurs personnes et je ne sais pas ou ils auront leur fichier Doc.

    Par contre, je vais essayer de voir avec Clipboard si ça fonctionne mieux.. car la copie du document word se fait via un autre macros donc c'est pour ça que je disais que c'était mieux d'utiliser le presse papier. (et je pense que du coup, on n'a pas besoin d'ouvrir le document etc)


    Edit: j'ai modifié le code pour que ça fonctionne !

    voila la solution :

    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
     
    Sub TestMail()
     
    Dim AdresseFrom As String, AdresseDest As String, CCI As String, CC As String
    Dim Sujet As String, Corps As String
    Dim outlookwordeditor As Object
     
    Set ol = CreateObject("outlook.application")
    Set myitem = ol.CreateItem(olMailItem)
     
     
    AdresseFrom = "Ax"
    AdresseDest = "Ax"
    CC = "Ax"
    CCI = "Ax"
    Sujet = "Test"
     
    myitem.To = AdresseDest
    myitem.SentOnBehalfOfName = "Ax@Google.com"
    myitem.Subject = Sujet
    myitem.CC = CC
    myitem.BCC = CCI
     
     
    Set outlookwordeditor = myitem.GetInspector.WordEditor
    outlookwordeditor.Range.PasteAndFormat wdFormatOriginalFormatting
    myitem.Display ' c'est ICI la méthode Display
     
     
     
    Set ol = Nothing
    Set myitem = Nothing
    Set outlookwordeditor = Nothing
     
    End Sub
    Merci à toi !

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

Discussions similaires

  1. Macros à la suite pour envoi de mail
    Par mad01 dans le forum Macros et VBA Excel
    Réponses: 58
    Dernier message: 12/04/2015, 18h08
  2. Macro pour envoi de mail auto selon conditions
    Par soadadrinker dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/06/2013, 00h16
  3. Macro pour envoi de mail
    Par guiles dans le forum VBA Word
    Réponses: 2
    Dernier message: 10/06/2009, 16h37
  4. [MySQL] Parcourir la liste des emails extraits de la base pour envois de mail
    Par Ylias dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/02/2006, 22h34
  5. pb pour envoi de mail
    Par taurus dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 28/11/2005, 09h51

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