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 :

Comment intégrer le corps du message dans une fonction SendMail


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Points : 18
    Points
    18
    Par défaut Comment intégrer le corps du message dans une fonction SendMail
    Bonjour à tous,
    J'espère être dans le bon forum!!!!

    Voici le bout de code qui fonctionne (normal il est adapté de la FAQ) auquel je voudrais intégrer le bout en rouge correspondant au texte devant figurer dans le corps du message.

    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 EnvoiClasseurExcel()
     
    ActiveWorkbook.SendMail _
    Recipients:=Array(Range("D4"), _
    Range("F10")), _
    Subject:="Projet " & ActiveWorkbook.Name, _
    ReturnReceipt:=True
     
    Body:="Pour votre information, le projet "& range("A2")&" a été validé par mes soins. " & _
    vbLf & "La production est donc lancé à compter de ce jour." & _
    vbLf & "Avec mes remerciements." & _
    ' vbLf & range("C2")
     
    End Sub
    Merci de me dire si c'est possible car la méthode SendMail a ceci de génial, c'est qu'elle ne s'occupe pas de la messagerie utilisée en l'occurence Lotus Notes 6.51 pour certain des utilisateurs.

    Dans l'attente de vos solutions Merci d'avance

  2. #2
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    bonjour,


    Un petit tour dans l'aide en ligne pour la méthode sendmail , t'apprends que celle-ci n'as pas d'argument "body"...
    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Merci de ta réponse, la formulation était certainement mal faite car ce que je cherche c'est comment écrire le texte du message tout en utilisant la fonction SenMail ou bien comment faire autrement.

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Issu de la FAQ, une autre méthode pour envoyer un mail sans passer par la messagerie
    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 EnvoiMail_CDO()
    Dim iMsg As Object, iConf As Object, Flds As Object
    Dim Fichier As Variant
     
    If MsgBox("Voulez-vous joindre un fichier ?", vbQuestion + vbYesNo) = vbYes Then
        Fichier = Application.GetOpenFilename
    Else
        Fichier = False
    End If
     
    Set iMsg = CreateObject("cdo.message")
    Set iConf = CreateObject("cdo.configuration")
     
    Set Flds = iConf.fields
    With Flds
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        'ci-dessous, remplacez "smtp.nomserveur.fr" par le nom de serveur de votre FAI :
        'pour trouver le nom de serveur de votre FAI --> http://outlook.developpez.com/faq/index.php?page=Configuration#Paras_FAI
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.nomserveur.fr"
        .Update
    End With
     
    With iMsg
        Set .Configuration = iConf
        .To = "xxxxx@toto.com"
        .From = "xxxxx@toto.com"
        .Subject = "Le sujet du message"
        .HTMLBody = "Ceci est un essai ..."
        If Fichier <> False Then .AddAttachment Fichier
        .Send
    End With
     
    End Sub
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Merci fring,
    C'est super, ça marche hormis que l'instruction AddAttachment n'est pas reconnue (je suis en version Excel 2000).

    Si je mets le curseur devant .Send et que je demande d'exécuter jusqu'au curseur, il m'envoi le message suivant :

    "Erreur d'exécution '-2146697203(800c000d)':
    Erreur Automation"

    Y a t il un contournement ?

    J'ai mis en rouge les modifications que j'ai apporté (rien de fondamental il me semble), merci de me donner des conseils et qu'est ce que c'est exactement ces erreurs Automation ?

    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
    Sub EnvoiMail_CDO()
    Dim iMsg As Object, iConf As Object, Flds As Object
    Dim Fichier As Variant
     
    'If MsgBox("Voulez-vous joindre un fichier ?", vbQuestion + vbYesNo) = vbYes Then
    '    Fichier = Application.GetOpenFilename
    'Else
        Fichier = ActiveWorkbook.Name
    'End If
     
    Set iMsg = CreateObject("cdo.message")
    Set iConf = CreateObject("cdo.configuration")
     
    Set Flds = iConf.fields
    With Flds
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        'ci-dessous, remplacez "smtp.nomserveur.fr" par le nom de serveur de votre FAI :
        'pour trouver le nom de serveur de votre FAI --> http://outlook.developpez.com/faq/index.php?page=Configuration#Paras_FAI
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.orange.fr"
        .Update
    End With
     
    With iMsg
        Set .Configuration = iConf
        .To = Range("D4")
        .From = Range("d4")
        .Subject = "Projet " & ActiveWorkbook.Name
        .HTMLBody = "Pour votre information, le projet " & Range("A2") & " a été validé par mes soins. " & _
        vbLf & "La production est donc lancé à compter de ce jour." & _
        vbLf & "Avec mes remerciements." & _
        vbLf & Range("C2")
        .AddAttachment (Fichier)
    '    If Fichier <> False Then .addattachment Fichier
        .Send
    End With
     
    End Sub

  6. #6
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Je suis sur Excel 2000 aussi et l'attachement de fichier fonctionne très bien mais pourquoi as-tu mis Fichier entre parenthèses ?

    D'autres part Fichier = ThisWorkbook.Name est incomplet, il faut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier = ThisWorkbook.Path & "\" & ThisWorkbook.Name
    [EDIT] après essais, je viens de constater que cette procédure ne peut pas envoyer en fichier joint le classeur actif, cela renvoie un message d'erreur "fichier déjà utilisé par un autre processus"

    Mais (ils sont trop forts ) ce problème est également solutionné dans la FAQ
    Teste ceci:
    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
    Sub envoi_classeur_actif()
    Dim iMsg As Object, iConf As Object, Flds As Object
    Dim Fichier As Variant, SourceWb As Workbook
     
    Set SourceWb = ActiveWorkbook
    Fichier = "C:\" & ThisWorkbook.Name
    SourceWb.SaveCopyAs Fichier
     
    Set iMsg = CreateObject("cdo.message")
    Set iConf = CreateObject("cdo.configuration")
     
    Set Flds = iConf.fields
    With Flds
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        'remplacez "smtp.nomserveur.fr" par le nom de serveur de votre FAI :
        'http://outlook.developpez.com/faq/index.php?page=Configuration#Paras_FAI
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.orange.fr"
        .Update
    End With
     
    With iMsg
        Set .Configuration = iConf
        .To = Range("D4")
        .From = Range("d4")
        .Subject = "Projet " & ActiveWorkbook.Name
        .HTMLBody = "Pour votre information, le projet " & Range("A2") & " a été validé par mes soins. " & _
        vbLf & "La production est donc lancé à compter de ce jour." & _
        vbLf & "Avec mes remerciements." & _
        vbLf & Range("C2")
        .AddAttachment Fichier
        .Send
    End With
     
     
    Set iMsg = Nothing
    Set iConf = Nothing
    Set Flds = Nothing
    Set SourceWb = Nothing
    Kill Fichier
    End Sub
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Cette fois ci ça marche , un TRES GRAND MERCI

    à toi fring.
    Ce n'est pas facile pour un débutant comme moi qui touche du code une fois par semestre et encore encore merci pour ton aide précieuse

    Cordialement

    Patrick

  8. #8
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Bonjour,

    Citation Envoyé par Patrick78 Voir le message
    ...la méthode SendMail a ceci de génial, c'est qu'elle ne s'occupe pas de la messagerie utilisée en l'occurence Lotus Notes 6.51 pour certain des utilisateurs.
    ...
    et CDO fonctionne avec Lotus Notes ?
    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

  9. #9
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par JackOuYA Voir le message
    et CDO fonctionne avec Lotus Notes ?
    L'intérêt de CDO est qu'il n'utilise pas le logiciel de messagerie pour envoyer le mail

    Patrick, c'est surtout kiki29 et Silkyroad qu'il faut remercier pour leurs contributions que tu peux trouver ICI dans la FAQ
    Comment envoyer un fichier par mail sans Outlook ?
    Pourquoi j'obtiens une erreur d'exécution sur la ligne .Send lorsque j'utilise la méthode CDO ?


    Si ton problème est résolu, pense au Tag
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/04/2016, 15h29
  2. comment supprimer un messages dans une discussion?
    Par upi01 dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 1
    Dernier message: 23/11/2013, 12h02
  3. Comment passer un tableau à deux dimensions dans une fonction
    Par Niko_de_bordo dans le forum Débuter
    Réponses: 2
    Dernier message: 02/07/2009, 15h15
  4. Réponses: 1
    Dernier message: 19/09/2008, 09h29
  5. Réponses: 1
    Dernier message: 02/08/2008, 11h57

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