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 :

Mail avec PJ PDF à partir d'un fichier Excel


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2023
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Mail avec PJ PDF à partir d'un fichier Excel
    Bonjour à tous,

    Je dois envoyer un mail avec en pièce jointe un fichier pdf qui est différent pour chacun de mes clients. Ce fichier pdf a comme nom, le code client que je lui ai affecté. Je dispose d'un fichier excel (liste de diffusion) reprenant tous les codes clients, avec en face les adresses mail de chaque client.

    Comment utiliser mon tableau excel pour faire un envoi mail individualisé svp ?

    Merci.

  2. #2
    Membre éprouvé
    Inscrit en
    Décembre 2002
    Messages
    800
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 800
    Points : 1 259
    Points
    1 259
    Par défaut
    Bonjour, voici une 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
    36
    37
    38
    39
    40
    41
    Sub EnvoiMailPieceJointe()
        Dim OutlookApp As Object
        Dim OutlookMail As Object
        Dim Destinataire As String
        Dim CheminPieceJointe As String
        Dim CodeClient As String
        Dim ListeClients As Range
        Dim CelluleClient As Range
     
        ' Spécifiez la plage contenant les adresses e-mail et les codes clients
        Set ListeClients = ThisWorkbook.Sheets("Feuil1").Range("A2:B10") ' Ajustez le nom de la feuille et la plage selon vos besoins
     
        ' Initialisez Outlook
        Set OutlookApp = CreateObject("Outlook.Application")
     
        ' Parcourez chaque client dans la liste
        For Each CelluleClient In ListeClients
            Destinataire = CelluleClient.Offset(0, 1).Value ' Adresse e-mail du client
            CodeClient = CelluleClient.Value ' Code client
     
            ' Composez le mail
            Set OutlookMail = OutlookApp.CreateItem(0)
            With OutlookMail
                .Subject = "Objet du mail" ' Remplacez par l'objet souhaité pour le mail
                .To = Destinataire
                .Body = "Bonjour " & CodeClient & "," & vbCrLf & vbCrLf & "Contenu du message." ' Remplacez par le contenu du message souhaité
                ' Spécifiez le chemin d'accès du fichier PDF correspondant au code client
                CheminPieceJointe = "C:\Chemin\vers\le\fichier\" & CodeClient & ".pdf" ' Ajustez le chemin d'accès selon votre situation
                .Attachments.Add CheminPieceJointe ' Ajoutez la pièce jointe au mail
                .Send ' Envoyez le mail
            End With
     
            ' Libérez la mémoire
            Set OutlookMail = Nothing
        Next CelluleClient
     
        ' Fermez Outlook
        Set OutlookApp = Nothing
     
        MsgBox "Envoi des e-mails terminé."
    End Sub
    Si ce n'est déjà fait, n'oubliez pas de référencer la bibliothèque Outlook dans l'environnement VBA.
    Pour des fins de test, vous pouvez remplacer la ligne .Send par .Display. Cela ouvrira le message dans la fenêtre de composition d'Outlook au lieu de l'envoyer directement.
    Ainsi, vous pourrez vérifier le contenu du message et vous assurer qu'il est correct avant de l'envoyer réellement.

  3. #3
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2023
    Messages : 3
    Points : 3
    Points
    3
    Par défaut problèmes code
    Bonjour,


    Merci beaucoup pour votre aide !

    Cependant je rencontre plusieurs problèmes :
    - Dans l’objet du mail, j’ai des adresses email à la place du code client qui se mettent alors que j’ai bien mis dans subject = « Mandat de prélèvement : » & CodeClient
    - Dans le dossier « MANDATS DE PRELEVEMENT », qui est sur le bureau de mon ordinateur, j’ai des centaines de pdf dont chacun a comme nom le code client.pdf. Un fichier pdf correspond donc à un client. Et lorsque je renseigne le premier fichier pdf (0ABAU) dans le code, cela me met ce même fichier dans tous les mails. Alors qu’il faudrait que ce soit un envoi personnalisé (un mail comprenant un fichier en PJ dont le nom du fichier pdf est un code client rattaché sur la liste de diffusion à une adresse mail spécifique). Sachant que j'ai également rajouté dans le code une PJ en pdf qui est commune à tous les clients, et qui fonctionne.
    - J’ai testé le code sur la base d’un fichier test (dans lequel la feuille s’appelle « mail ») dans lequel j’ai mis deux adresses emails m’appartenant (en colonne C). Dans le fichier test, j’ai gardé que 4 clients. Cela devrait donc me créer 4 emails, et cela en crée 8.
    - Comment insérer une signature outlook à la fin du mail ?


    Je prends soin de vous remettre le code que j'ai modifié ci-après :

    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
    Sub EnvoiMailPieceJointe()
        Dim OutlookApp As Object
        Dim OutlookMail As Object
        Dim Destinataire As String
        Dim CheminPieceJointe As String
        Dim CodeClient As String
        Dim ListeClients As Range
        Dim CelluleClient As Range
     
        ' Spécifiez la plage contenant les adresses e-mail et les codes clients
        Set ListeClients = ThisWorkbook.Sheets("mail").Range("B2:C5") ' Ajustez le nom de la feuille et la plage selon vos besoins
     
        ' Initialisez Outlook
        Set OutlookApp = CreateObject("Outlook.Application")
     
        ' Parcourez chaque client dans la liste
        For Each CelluleClient In ListeClients
            Destinataire = CelluleClient.Offset(0, 1).Value 'C2' Adresse e-mail du client
            CodeClient = CelluleClient.Value 'B2' Code client
     
            ' Composez le mail
            Set OutlookMail = OutlookApp.CreateItem(0)
            With OutlookMail
                .Subject = "Mandat de prélèvement client :" & CodeClient  ' Remplacez par l'objet souhaité pour le mail
                .To = Destinataire
                .Body = "Bonjour" & "," & vbCrLf & vbCrLf & "Contenu du message." ' Remplacez par le contenu du message souhaité
                ' Spécifiez le chemin d'accès du fichier PDF correspondant au code client
                CheminPieceJointe = "C:\Users\Laeticia\Desktop\MANDATS DE PRELEVEMENT\0ABAU.pdf" ' Ajustez le chemin d'accès selon votre situation
                .Attachments.Add CheminPieceJointe ' Ajoutez la pièce jointe au mail
                .Attachments.Add "C:\Users\Laeticia\Desktop\COURRIER PRELEVEMENTS AUTOMATIQUES.pdf"
                .Display ' Envoyez le mail
            End With
     
          ' Libérez la mémoire
            Set OutlookMail = Nothing
            Next CelluleClient
     
        ' Fermez Outlook
        Set OutlookApp = Nothing
     
        MsgBox "Envoi des e-mails terminé."
     
    End Sub

  4. #4
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 947
    Points : 4 058
    Points
    4 058
    Par défaut
    Bonjour,
    Je n'ai pas tout compris à vos problèmes mais pour les deux derniers j'ai une piste :
    - vous sélectionnez deux plages C et D sur 4 lignes, puis vous faites un For Each, soit une boucle sur 2x4 = 8 cellules, donc 8 messages. Il faudrait ne sélectionner qu'une seule colonne.
    - Pour ajouter votre signature, c'est curieux mais il faut (de mémoire) ajouter ". Body" à la suite de ".Body & votre message". Soit : " .Body & message & .Body “
    En tout cas ça marche quand on utilise HTMLBody.
    Bonne continuation.

  5. #5
    Membre éprouvé
    Inscrit en
    Décembre 2002
    Messages
    800
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 800
    Points : 1 259
    Points
    1 259
    Par défaut
    J'ai légèrement modifié en fonction de vos dernières infos:

    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
    Sub EnvoyerEmails()
        Dim OutlookApp As Object
        Dim OutlookMail As Object
        Dim FichierPDF As String
        Dim FichierPDFGenerique As String
        Dim ListeClients As Range
        Dim Client As Range
        Dim CodeClient As String
        Dim AdresseEmail As String
     
     
       ' Chemin du fichier PDF générique
        FichierPDFGenerique = "C:\Users\Laeticia\Desktop\COURRIER PRELEVEMENTS AUTOMATIQUES.pdf"
     
        ' Récupération de la liste des clients et de leurs adresses e-mail
        Set ListeClients = ThisWorkbook.Sheets("mail").Range("B2:C5")
     
         ' Initialisez Outlook
        Set OutlookApp = CreateObject("Outlook.Application")
     
        ' Parcourir chaque client dans la liste
        For Each Client In ListeClients.Rows
            ' Récupération du code client et de l'adresse e-mail
            CodeClient = Client.Cells(1, 1).Value
            AdresseEmail = Client.Cells(1, 2).Value
     
            ' Chemin du fichier PDF spécifique au client
            FichierPDF = "C:\Users\Laeticia\Desktop\MANDATS DE PRELEVEMENT\" & CodeClient & ".pdf"
     
            ' Création du nouvel e-mail
            Set OutlookMail = OutlookApp.CreateItem(0)
     
            ' Ajout des pièces jointes
            With OutlookMail
                .To = AdresseEmail
                .Subject = "Mandat de prélèvement client :" & CodeClient
                .Body = "Bonjour" & "," & vbCrLf & vbCrLf & "Contenu du message."
                .Attachments.Add FichierPDF
                .Attachments.Add FichierPDFGenerique
                .Display ' Envoyer l'e-mail
            End With
     
            ' Libération de la mémoire
            Set OutlookMail = Nothing
        Next Client
     
        ' Fermeture de l'application Outlook
        Set OutlookApp = Nothing
     
        MsgBox "Envoi des e-mails terminé."
     
    End Sub

  6. #6
    Candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2023
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Alors franchement mille fois merci Franc, ça a super bien fonctionné vous êtes génial ! Grâce à vous j'ai gagné un temps phénoménal

    Merci également à vous laurent_ott

    Je clôture la discussion !

    Bonne continuation.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/10/2017, 10h28
  2. Réponses: 1
    Dernier message: 27/06/2012, 00h43
  3. Macro Ouverture de plusieurs fichiers PDF à partir d'un fichier Excel ?
    Par Mounamidou dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 01/12/2009, 18h53
  4. [FPDF] Envoi de mail au format PDF, à partir d'une page PHP
    Par King_T dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 01/05/2006, 23h21
  5. [FPDF] Export de PDF à partir d'un fichier PHP
    Par Mat5725 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 05/04/2006, 20h57

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