Adapter code VBA d'envoi mail pour ajout dpièce jointe

Salut le forum

Permettez que je pose directement mon besoin.

J'ai le code vba ci-dessous qui me permet d'envoyer des mails avec pièce jointe.

J'ai plusieurs fichier pdf (plat, Cable, Télé et Bidon) dans mon dossier nommé POOLB.

Je vend 5 types de produits (A, B, C, D et F) à des clients.

En fonction du type de produit vendu, un mail devra être envoyé au client avec la pièce jointe correspondante.

Comment faire pour que la pièce-jointe soit celle qui doit être jointe?

Est-il possible de raisonner de la sorte: si le produit A est vendu, que le fichier joint soit Cable, sinon si c'est C que le fichier joint soit Bidon).

N.B: dans mon cas, en fonction du produit vendu je sais quelle fichier joindre mais comment définir cela?

Function RDB_Mail_PDF_Outlook(FileNamePDF As String, StrTo As String, _
                              StrSubject As String, StrBody As String, Send As Boolean)
    Dim OutApp As Object
    Dim OutMail As Object

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    On Error Resume Next
    With OutMail
        .To = StrTo
        .CC = ""
        .BCC = ""
        .Subject = StrSubject
        .Body = StrBody
        .Attachments.Add FileNamePDF
        If Send = True Then
            .Send
        Else
            .Display
        End If
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing
End Function

Bonjour zombe,

A la lecture de ton code, il faut définir le fichier à joindre dans le premier argument (FileNamePDF) de ta fonction.

Bonjour vba-new

Merci pour ton feedback. voici le complement de ce que tu demandes.

.Attachments.Add ("C:\users/benzoplus/desktop/cable.pdf")

Bonjour zombe,

Je n'ai rien demandé

Je voulais dire que lors de l'appel de la fonction RDB_Mail_PDF_Outlook tu fais un traitement en amont afin d'avoir le bon FileNamePDF. Ex :

Dim NomPDF As String
If 'A est vendu' Then
NomPDF= "C:\users/benzoplus/desktop/cable.pdf"
ElseIf 'C est vendu' Then
NomPDF= "C:\users/benzoplus/desktop/bidon.pdf"
End If
'Appel de la fonction d'envoi de mail
Call RDB_Mail_PDF_Outlook(NomPDF, ........., ..........)

Merci pour ta proposition.

Je n'arrive pas à te saisir. ce que tu dis ci-dessous veut dire d'appeler la macro. pour moi, on appelle une macro à partir d'un autre module ou d'une autre feuille mais tel n'est pas le cas. je veux qu'à partir du code macro que j'ai donné, on puisse faire de sorte que les pièces à joindre fonctionne sous condition.Pouvez-vous me reéclairer svp?

vba-new a écrit :

'Appel de la fonction d'envoi de mail

Call RDB_Mail_PDF_Outlook(NomPDF, ........., ..........)

zombe a écrit :

ce que tu dis ci-dessous veut dire d'appeler la macro. pour moi, on appelle une macro à partir d'un autre module

C'est bien ça ! D'autant plus qu'ici on a une fonction ! Un des buts d'une fonction est de la désolidariser du traitement principal afin de pouvoir la réutiliser dans une autre procédure.

Une question, comment vas-tu lancer la macro RDB_Mail_PDF_Outlook ?

Merci vba-new

J'ai 2 facons pour utiliser la macro:soit l'affecter à un bouton ou l'appeler à partir d'une autre macro contenue dans un module.

Pour tout ca y'a pas de problème.

Si j'ai bien compris, il s'agit de concevoir le modèle de code que vous me proposez dans un module et après l'appeler dans un autre module ou... donc il s'agira d'appeler 2 macros en meme temps : l'un pour le contenu du mail et l'autre pour la pièce jointe.

Est-ce bien cela?

zombe a écrit :

J'ai 2 facons pour utiliser la macro:soit l'affecter à un bouton

Lorsque ta macro possède des arguments, l'appeler directement n'est pas possible. Tu ne peux pas passer par le menu des macros et la lancer comme tu le ferais avec une macro "normale".

Comme j'ai du mal à t'expliquer, peux-tu joindre un bout de ton fichier afin que je te fasse un exemple ? S'il y a des données confidentielles, essaie de les anonymiser.

Salut vba-new et excuse moi du retard.

Ci-joint le fichier que t'as demandé.

J'ai essayé de modifier le sujet un tout petit peu seulement.

Le code se trouve dans thisworkbook.

322mail-joint.xlsm (17.47 Ko)

Bonjour Zombe,

J'ai regardé vite fait et je vois que tu veux envoyer 2 fichiers à la fois lorsque B est sélectionné.

Sache que je ne maitrise pas l'envoi de mail via VBA.

C'est pourquoi j'avais précisé au début :

vba-new a écrit :

A la lecture de ton code, il faut définir le fichier à joindre dans le premier argument (FileNamePDF) de ta fonction.

Je regarderai plus en détail demain soir probablement.

ok pour demain.

J'ai trouvé une solution en ma manière.

J'ai copié le code et collé en autant du nombre de produit.

J'ai defini le nom et adapté les pièces à joindre pour chaque produit à vendre.

dans le code IMPRIME que j'ai (pour chaque produit venduà) dans un autre module j'apel le mail correspondant au produit vendu et ca marche bien. Si t'arrive a trouver ce que tu veux faire ca sera pour moi une autre solution (expérience).

Rechercher des sujets similaires à "adapter code vba envoi mail ajout dpiece jointe"