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 email à partir d'excel


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Envoi email à partir d'excel
    Bonjour,

    J'ai réalisé une macro pour envoyer des emails à partir d'excel.
    Ces derniers sont expédiés, un à un, a toutes les personnes possédant une adresse email. (je l'ai testée, elle fonctionne)

    Mon problème vient du code pour insérer les pièces jointes, je souhaiterais envoyer plusieurs pièces jointes, les mêmes, à tous. Avec mon code je ne peux envoyer qu’une pièce jointe.

    Pourriez-vous m’aider à finaliser cette macro ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1ère PJ : colonne U, ligne 7
    2ème PJ : colonne U, ligne 8
    3ème PJ : colonne U, ligne 9
    Merci pour votre aide

    Code vb : 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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Sub Email()
    ' Filtre la colonne des adresses mails
    Columns("O:O").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=1, Criteria1:="<>"
    ' Déclaration des variables
    Dim outlookDossier As Outlook.MAPIFolder
    Dim outlookMessage As Outlook.MailItem
    Dim vAdresse As String
    Dim vObjet As String
    Dim vMessage As String
    Dim PJ As String
    Dim vCellule As Object
    ' Récupération du message
        For Each vCellule In Range("U11:U26")
            vMessage = vMessage & vCellule & Chr(10)
        Next
     
    ' Ajout pièce jointe
    If PJ <> "" Then
        If Dir(PJ, vbNormal Or vbReadOnly Or vbHidden Or vbSystem Or vbArchive) = "" Then
            MsgBox "fichier introuvable !", vbCritical, "Attention"
            Set outlookDossier = Nothing
            Set outlookMessage = Nothing
            Exit Sub
        End If
    End If
     
    ' Envoi les messages à tout le groupe
    Range("O2").Select
    Do While ActiveCell <> ""
        vAdresse = ActiveCell
        vObjet = Range("U5")
        PJ = Range("U7")
        Set outlookDossier = GetObject("", "Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
        Set outlookMessage = outlookDossier.Items.Add
        With outlookMessage
            .Subject = vObjet
            .Recipients.Add vAdresse
            .Body = vMessage
            .OriginatorDeliveryReportRequested = True
            .ReadReceiptRequested = True
            .Attachments.Add PJ
            .Send
        End With
        ActiveCell.Offset(0, 1) = "x"
        ActiveCell.Offset(1, 0).Select
        Loop
        Set outlookMessage = Nothing
        Set outlookDossier = Nothing
    ' Supprime le filtrage de la colonne des émails
    Selection.AutoFilter
    ActiveWorkbook.Save
    End Sub

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    Tu peux gérer l'envoi de plusiseurs pièces jointes de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        With outlookMessage
            .Subject = vObjet
            .Recipients.Add vAdresse
            .Body = vMessage
            .OriginatorDeliveryReportRequested = True
            .ReadReceiptRequested = True
            .Attachments.Add PJ_1
            .Attachments.Add PJ_2
            .Attachments.Add PJ_3
            .Send
        End With


    bonne soirée
    michel

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Envoi email à partir d'excel
    Bonjour et merci
    Ma macro fonctionne parfaitement

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Envoi email avec PJ à partir d'excel
    Re bonjour,

    C'est à devenir folle, ma macro n'a fonctionnée qu'une fois, maintenant elle bloque à :

    Quelqu'un pourrait t il corriger s'il vous plait ?

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Sub Envoi_Email_à_partir_excel()
     
    ' Filtre la colonne des adresses mails
    Columns("O:O").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=1, Criteria1:="<>"
     
    ' Déclaration des variables
    Dim outlookDossier As Outlook.MAPIFolder
    Dim outlookMessage As Outlook.MailItem
    Dim vAdresse As String
    Dim vObjet As String
    Dim vMessage As String
    Dim vCellule As Object
    Dim PJ_1 As String
    Dim PJ_2 As String
    Dim PJ_3 As String
     
    ' Récupération du message
        For Each vCellule In Range("U11:U26")
            vMessage = vMessage & vCellule & Chr(13)
        Next
     
    ' Envoi les messages à tout le groupe
    Range("O2").Select
    Do While ActiveCell <> ""
        vAdresse = ActiveCell
        vObjet = Range("U5")
        PJ_1 = Range("U7")
        PJ_2 = Range("U8")
        PJ_3 = Range("U9")
        Set outlookDossier = GetObject("", "Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
        Set outlookMessage = outlookDossier.Items.Add
        With outlookMessage
            .Subject = vObjet
            .Recipients.Add vAdresse
            .Body = vMessage
            .OriginatorDeliveryReportRequested = True
            .ReadReceiptRequested = True
            .Attachments.Add PJ_1
            .Attachments.Add PJ_2
            .Attachments.Add PJ_3
            .Subject = vObjet
            .Recipients.Add vAdresse
            .Body = vMessage
            .OriginatorDeliveryReportRequested = True
            .ReadReceiptRequested = True
            .Send
        End With
        ActiveCell.Offset(0, 1) = "x"
        ActiveCell.Offset(1, 0).Select
        Loop
        Set outlookMessage = Nothing
        Set outlookDossier = Nothing
     
    ' Supprime le filtrage de la colonne des émails
    Selection.AutoFilter
    ActiveWorkbook.Save
     
    End Sub

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    Une raison possible du plantage :

    l'ajout de pièce jointe fonctionne si la source est renseignée et si le fichier existe réellement.

    Pour vérifier ceci, il faut ajouter la fonction suivante dérivée de la FAC (silkyroad) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Function FichierExiste(NomFichier As String) As Boolean
        If NomFichier <> "" Then FichierExiste = Dir(NomFichier) <> vbNullString
    End Function
    puis modifier les lignes suivantes de votre code par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If FichierExiste(PJ_1) Then .Attachments.Add PJ_1
    If FichierExiste(PJ_2) Then .Attachments.Add PJ_2
    If FichierExiste(PJ_3) Then .Attachments.Add PJ_3
    En espérant vous être utile,

    Philippe

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Envoi email avec PJ à partir d'excel
    Bonjour
    Ma macro fonctionne parfaitement
    Merci pour votre aide

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

Discussions similaires

  1. Envoie mail à partir d'excel à adresse mail d'une cellule
    Par Cordonny dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/06/2013, 12h10
  2. envoi automatique email à partir d'Excel
    Par ritonetmumu dans le forum Excel
    Réponses: 1
    Dernier message: 17/12/2007, 22h53
  3. Envoi mail à partir d'Excel (pb de fonctionnement)
    Par bybelos33 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/03/2007, 15h46
  4. [VBA]envoyer un email avec un fichier joint à partir d'excel
    Par mcay dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/12/2005, 10h21
  5. envoi d'un état par email à partir d'un formulaire
    Par claudio-esco dans le forum Access
    Réponses: 7
    Dernier message: 09/12/2005, 11h05

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