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 :

Envoi mail avec pièce jointe [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut Envoi mail avec pièce jointe
    Bonjour à tous;
    Nouvelle question concernant l'envoi d'un Email à une liste de destinataires avec une pièce jointe. Mon problème est de savoir comment passer le nom du fichier en pièce jointe.
    Dans une procédure je crée un fichier avec comme nom "toto_09820_142710" où toto est une valeur constante, 090820 est la date et 142710 est l'heure (format hhmmss).
    J'emploie 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
        Dim iMsg As Object
        Dim iConf As Object
        Dim strbody As String
        Dim Flds As Variant
     
        Set iMsg = CreateObject("CDO.Message")
        Set iConf = CreateObject("CDO.Configuration")
     
            iConf.Load -1    ' CDO Source Defaults
            Set Flds = iConf.Fields
            With Flds
                .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
                .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") _
                               = "smtp.orange.fr"
                .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
                .Update
            End With
     
        strbody = "Hi there" & vbNewLine & vbNewLine & _
                  "This is line 1" & vbNewLine & _
                  "This is line 2" & vbNewLine & _
                  "This is line 3" & vbNewLine & _
                  "This is line 4"
     
        With iMsg
            Set .Configuration = iConf
            .To = "pcdoc@wanadoo.fr"
            .CC = ""
            .BCC = ""
            .From = """Jeff"" <ron@something.nl>"
            .Subject = "Important message de test envoi depuis EXCEL"
            .TextBody = strbody
            .AddAttachment "c:\dossier\file.xls"
            .Send
        End With
    Ce code fonctionne parfaitement mais je ne sais pas comment remplacer la valeur ".AddAttachment" par le nom du fichier que je viens de créer.
    Plus tôt dans ma procédure j'ai une variable définie comme suit :

    nomfich = "toto_" & Format(Date, "yymmdd") & "_" & Format(Time, "hhmmss") & ".xls"
    Puis-je réutiliser cette variable nomfich et si oui quelle est la syntaxe?

    Autre question : J'ai dans une feuille nommée "Données" une plage nommée "membres" contenant la liste des adresses Email destinataires. Comment faire pour remplir le "To:"

    D'avance Merci pour votre aide.
    Bonne journée.

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,
    Si j'ai bien compris le fichier à envoyer est le fichier actif dans ce cas pas besoin de tracasser avec ta variable précédente cette ligne devrait suffire pour définir la fichier à envoyer (le fichier actif)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Monfichier = "" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & ""
    Pour ce qui est de ta liste d'envoi, normalement il faut respecter la syntaxe de l'application qui envoi, donc 'nom@boite.com; nom2@boite.com; etc'
    A l'époque j'avais fais une boucle pour récupérer chaque nom et les concaténer en String, du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 2 to DerLigne
         Liste = Liste & "; " & sheets("TaFeuille").cells(i,1)
    Next i
    J'espère que ces pistes vont te dépanner (!! j'ai rien testé suivant ton cas)

    A+
    N'oubliez pas le si votre problème est solutionné.

  3. #3
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut
    Bonjour à tous;
    Pour Fvandermeulen, je viens de tester tes suggestions, mais lors de l'envoi de l'email, j'ai une erreur 438 sur la ligne .AddAttchement.
    Aurais-tu une idée?

  4. #4
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,
    Ben comme j'utilise toujours Outlook je suis pas à l'aise avec ton code mais j'aurais tendance à récupérer la valeur String de la variable dans une MsgBox pour être certain qu'elle correspond à ce que la ligne .AddAttachment attend.
    A+
    N'oubliez pas le si votre problème est solutionné.

  5. #5
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut
    Bonjour;
    Lorsque je teste la macro en pas à pas avec F8, je vois bien la valeur du monfichier qui est du genre "C:\test\toto.xls".
    Par contre je me demande si il ne me faudrait pas ajouter références pour VBA (Dans fenêtre code VBA, menu Outils/Références.
    L'ennui est que je ne sais pas quelles seraient ces références.
    A toutes fins utiles voici le code tel que je le teste :

    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
     
    Sub CDO_Mail_Small_Text()
        Dim iMsg As Object
        Dim iConf As Object
        Dim strbody As String
        Dim Flds As Variant
        Dim nomfich As String
     
     
        nomfich = "" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & ""
        Set iMsg = CreateObject("CDO.Message")
        Set iConf = CreateObject("CDO.Configuration")
     
            iConf.Load -1    ' CDO Source Defaults
            Set Flds = iConf.Fields
            With Flds
                .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
                .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") _
                               = "smtp.orange.fr"
                .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
                .Update
            End With
     
        strbody = "Hi there" & vbNewLine & vbNewLine & _
                  "This is line 1" & vbNewLine & _
                  "This is line 2" & vbNewLine & _
                  "This is line 3" & vbNewLine & _
                  "This is line 4"
     
        With iMsg
            Set .Configuration = iConf
            .To = "toto@wanadoo.fr"
            .CC = ""
            .BCC = ""
            .From = """Jeff"" <jeff@wanadoo.fr>"
            .Subject = "Important message de test envoi depuis EXCEL"
            .TextBody = strbody
            .AddAttachment = nomfich
            .Send
        End With
     
    End Sub
    En tout cas merci pour ton temps.
    Cordialement

  6. #6
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut
    Bonsoir;
    Mon problème est résolu.
    En fait j'ai exécuté le même code dans la procédure d'un bouton, et cela fonctionne.
    A+

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

Discussions similaires

  1. Envoie Mail avec pièce jointe
    Par Sh@m@n dans le forum SAP
    Réponses: 11
    Dernier message: 05/04/2012, 14h22
  2. Envoi mail avec pièce jointe sans confirmation
    Par grrimag dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/04/2008, 14h23
  3. [VBA-E]envoi mail avec pièce jointe
    Par magictom42 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/03/2007, 11h33
  4. Envoie mail avec pièce jointe
    Par Juniora dans le forum Access
    Réponses: 3
    Dernier message: 03/04/2006, 14h24
  5. [VB]Bp envoie mail avec piéce jointe
    Par jm1213 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/02/2006, 20h55

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