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 Outlook Discussion :

Envoi de mail Outlook à partir d'Excel


Sujet :

VBA Outlook

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 855
    Points : 581
    Points
    581
    Par défaut Envoi de mail Outlook à partir d'Excel
    Bonjour,

    J'envoie des mails Outlook 2003 à partir d'Excel 2003 avec ce code :

    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
    Private Function EnvoiMail_HTML(Adresse As String, Objet As String, Corps As String, Optional Pièce As String, Optional Cc As String, Optional Bcc As String, Optional Afficher_Mails As String)
     
        Dim MonAppliOutlook As New Outlook.Application
        Dim MonMail As Outlook.MailItem
        Dim MaPièce As Outlook.Attachments
     
        Set MonMail = MonAppliOutlook.CreateItem(olMailItem)
     
        On Error Resume Next
     
        With MonMail
     
            If Affichage = "OUI" Then .Display  'Afficher les mails avant confirmation ou pas, suivant paramètrage
            .To = Adresse
            If Not IsNull(Cc) Then .Cc = Cc
            If Not IsNull(Bcc) Then .Bcc = Bcc
            .Subject = Objet
            .HTMLBody = Corps
            .BodyFormat = olFormatHTML
     
           'If Not IsNull(Pièce) Then
            '    Set MaPièce = .Attachments
            '    MaPièce.Add Pièce, olByValue
           'End If
            .Send
        End With
     
        Set MonAppliOutlook = Nothing
        Set MonMail = Nothing
     
     
    End Function
    1/ Signature :

    .HTMLBody comprend la signature mais je voudrais ajouter la signature définie par défaut par l'utilisateur plutôt que celle que je "fabrique"

    Comment faire?

    Sur le web je trouve des exemples de code avec GetInspector mais je n'arrive pas à l'appliquer à mon code.

    2/ Boite de confirmation

    Si je veux simplement créer un mail dans outlook :

    • sans l'envoyer tout de suite pour pouvoir le compléter (pas de boîte de demande de confirmation d'envoi) http://cjoint.com/data/morFMPgNCP.htm
    • tout en affichant le mail généré pour pouvoir en compléter la rédaction


    Merci pour votre aide.

  2. #2
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut

    1/ regarde ce code
    http://www.outlookcode.com/codedetail.aspx?id=615

    2/ c'est quoi la question ? comment ne pas avoir de message de sécurité ?

    http://www.developpez.net/forums/d65...ataires-copie/

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 855
    Points : 581
    Points
    581
    Par défaut
    La question c'est que le message de sécurité n'a pas lieu d'être si je ne fais que génerer un brouillon dans outlook. Je veux simplement créer un message, pas l'envoyer

    Pas claire la référence. Ce n'est pas uen siganture externe (word) que je veux ajouter mais la signature définie dans Outlook

  4. #4
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Daejung Voir le message
    La question c'est que le message de sécurité n'a pas lieu d'être si je ne fais que génerer un brouillon dans outlook. Je veux simplement créer un message, pas l'envoyer
    Tu peux avoir un message de sécurité dans 2 cas pricipaux lors de l'envoi pas .send ou lors de l'ajout de destinataires et la vérification des noms
    (.resolve) mais ce ne sont pas les même messages le dernier c'est "tente d'accéder à vos contacts..."

    Maintenant ton code ne fait pas ce que tu demandes déjà "Affichage" n'est pas défini à moins que ce ne soit une variable public (dans tes parametres c'est "Afficher_Mails" !!)

    ensuite tu n'as pas de else donc forcèment le .send est exécuté à la fin, utilises le mode pas à pas pour vérifier.



    Pas claire la référence. Ce n'est pas uen siganture externe (word) que je veux ajouter mais la signature définie dans Outlook
    et avec cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub signature() 
    'by Oliv fev2007 pour OUTLOOK 2003 
    Set Item = ActiveInspector.CurrentItem 
    Item.GetInspector.CommandBars.Item("Insert").Controls("Signature").Controls(1).Execute 
    End Sub

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 855
    Points : 581
    Points
    581
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub signature() 
    'by Oliv fev2007 pour OUTLOOK 2003 
    Set Item = ActiveInspector.CurrentItem 
    Item.GetInspector.CommandBars.Item("Insert").Controls("Signature").Controls*(1).Execute 
    End Sub
    Ca ne marche pas dans mon code excel ou alors je ne l'insere pas au bon endroit. Ca a l'air de simuler l'appel à la barre de menus d'outlook alors que je n'ouvre pas outlook

  6. #6
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut,

    Effectivement cela fait un clic sur la première signature mais il faut que le mail soit ouvert=(display).

    Soit dit en passant si l'utilisateur a paramétré la signature automatique de ses mails elle se met en premier dans le mail mais si on met .htmlbody="......" cela efface la signature.

    voici ce que cela pourrait donner avec ton code

    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
    Private Function EnvoiMail_HTML(Adresse As String, Objet As String, Corps As String, Optional Pièce As String, Optional Cc As String, Optional Bcc As String, Optional Afficher_Mails As String)
     
        Dim MonAppliOutlook As Object
        Dim MonMail As Object
        Dim MaPièce As Object
        Set MonAppliOutlook = CreateObject("Outlook.Application")
        Set MonMail = MonAppliOutlook.CreateItem(olMailItem)
     
        'On Error Resume Next
        Corps = "<DIV align=left><FONT face=Verdana color=#000080 size=2>" & Corps & ",</FONT></DIV>"
        With MonMail
            .To = Adresse
            If Not IsNull(Cc) Then .Cc = Cc
            If Not IsNull(Bcc) Then .Bcc = Bcc
            .Subject = Objet
            'If Not IsNull(Pièce) Then
            '    Set MaPièce = .Attachments
            '    MaPièce.Add Pièce, olByValue
            'End If
            'pour supprimer la signature si elle existe
            .HTMLBody = ""
            .display
            .BodyFormat = 2    'olFormatHTML
            .GetInspector.CommandBars.Item("Insert").Controls("Signature").Controls(1).Execute
            .HTMLBody = Corps & MonMail.HTMLBody
            .Close 0
            If Afficher_Mails = "OUI" Then
                .display  'Afficher les mails avant confirmation ou pas, suivant paramètrage
     
            Else
                .send
            End If
        End With
     
        Set MonAppliOutlook = Nothing
        Set MonMail = Nothing
    End Function

    sinon il faut aller chercher le fichier html de la signature dans le dossier qui va bien
    %appdata%\microsoft\signatures
    encore faut 'il connaitre le nom de celui-ci

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 855
    Points : 581
    Points
    581
    Par défaut
    Je récupère bien la signature par défaut mais :

    * j'ai 2 fois le message de sécurité
    * le corps du message n'est pas inclus dans le mail

    Je ne comprends d'ailleurs pas
    Corps = "<DIV align=left><FONT face=Verdana color=#000080 size=2>" & Corps & ",</FONT></DIV>"
    car le contenu de ma variable "corps" est déja en html

    Je ne comprends pas non plus ce qu'apporte
    .HTMLBody = Corps & MonMail.HTMLBody

  8. #8
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut,
    Citation Envoyé par Daejung Voir le message
    Je récupère bien la signature par défaut mais :
    * j'ai 2 fois le message de sécurité
    Forcément c'est inérant à cette méthode as tu consulté le deuxième lien que je t'avais donné ?
    * le corps du message n'est pas inclus dans le mail
    ?
    Je ne comprends d'ailleurs pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Corps = "<DIV align=left><FONT face=Verdana color=#000080 size=2>" & Corps & ",</FONT></DIV>"
    car le contenu de ma variable "corps" est déja en html
    C'est un exemple de balisage HTML, ne sachant pas ce que tu lui envois comme paramétre
    Je ne comprends pas non plus ce qu'apporte
    .HTMLBody = Corps & MonMail.HTMLBody
    si tu as inséré ta signature et si tu ne fais pas cela tu écrases ta signature.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 855
    Points : 581
    Points
    581
    Par défaut
    Si je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .HTMLBody = Corps & MonMail.HTMLBody
    je ne récupère que la signature

    et si je mets

    .HTMLBody = Corps
    je ne récupère que le corps


    et

    .GetInspector.CommandBars.Item("Insert").Controls("Signature").Controls(1).Execute
    ne fait que doubler la signature car elle est insérée par défaut dans mes options de Outlook pour les messages sortants

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

Discussions similaires

  1. [XL-2010] envoi mail outlook avec vba excel
    Par fazpedro dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 30/09/2014, 10h27
  2. [XL-2003] Bug sur Envoi de mail Outlook à partir d'une macro
    Par graphikris dans le forum Macros et VBA Excel
    Réponses: 30
    Dernier message: 28/03/2013, 18h51
  3. envoi mail outlook avec vba excel
    Par momolamoto dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/09/2010, 10h45
  4. [XL-2003] envoie mail outlook avec donnée Excel
    Par xoum89 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/07/2010, 15h48
  5. [XL-2003] Envoi mail Outlook via VBA Excel erreur
    Par altra dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/08/2009, 16h50

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