Mail automatique ajout de destinataire et de copie

Bonjour,

J'ai créé la macro suivante pour l'envoie de mail automatique, mais je n'arrive pas à ajouter des destinataires et des personnes en copie, pouvez vous m'aider et est-il possible en lieu est place des destinataires et des personnes en copie de sélectionner des cellules, dans le fichier que j'ai joint les destinataires et les personnes en copie se trouve dans la feuille 2, merci par avance de votre aide :

Sub Mail_H_Interim_BIRD()

'enregistrement PDF des heures intérim

Dim Utilisateur As String, Dossier As String, Fichier As String

Utilisateur = Environ("username")

Dossier = "C:\Users\" & Utilisateur & "\CIME CAPITAL\Base Documentaire - Documents\7- Supply Chain\7.21 Management\RH\Archive PDF H Inétim 2024\"

Fichier = "Présence Log TPT 2024 V1.pdf"

ActiveWorkbook.Save

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Dossier & Fichier, _

Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

'Transmission du mail

Dim ObjOutlook As New Outlook.Application

Dim oBjMail

Dim Nom_Fichier As String

 Set ObjOutlook = New Outlook.Application

 Set oBjMail = ObjOutlook.CreateItem(olMailItem)

 With oBjMail

 .To = "a.margarian@mylight150.com"

 .CC = "e.causse@mylight150.com"

 .Subject = ActiveSheet.Range("D28").Value

 .Body = ActiveSheet.Range("D32").Value

 .Attachments.Add "C:\Users\" & Utilisateur & "\CIME CAPITAL\Base Documentaire - Documents\7- Supply Chain\7.21 Management\RH\Archive PDF H Inétim 2024\Présence Log TPT 2024 V1.pdf"

 .Send

 End With

End Sub

Bonjour Eddy,

il faut définir la variable "Agence" quand tu clic sur un des boutons Mail :

Sub StartPeople ()
Dim Agence As String
Agence = "START PEOPLE"
Mail_H_Interim_BIRD
End sub
image
Sub Mail_H_Interim_BIRD()
'enregistrement PDF des heures intérim

Dim Utilisateur As String, Dossier As String, Fichier As String

Utilisateur = Environ("username")

Dossier = "C:\Users\" & Utilisateur & "\CIME CAPITAL\Base Documentaire - Documents\7- Supply Chain\7.21 Management\RH\Archive PDF H Inétim 2024\"
Dossier = "C:\TEMP_GED\"
Fichier = "Présence Log TPT 2024 V1.pdf"

ActiveWorkbook.Save

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Dossier & Fichier, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

'Transmission du mail
Dim ObjOutlook As New Outlook.Application
Dim oBjMail
Dim MailDesti As String, MailCopie As String
Dim Ligne As Byte, Colonne As Byte

'Changer la valeur de la variable Colonne suivant le bouton de l'agence d'intérim selectionné
Select Case Agence
    Case "BIRD"
        Colonne = 16
    Case "ALP'EMPLOI"
        Colonne = 18
    Case "MANPOWER"
        Colonne = 20
    Case "INITIAL"
        Colonne = 22
    Case "START PEOPLE"
        Colonne = 24
End Select

With Feuil2
    For Ligne = 15 To 33
        If .Cells(Ligne, Colonne).Value <> "" Then MailDesti = MailDesti & "; " & .Cells(Ligne, Colonne).Value
        If .Cells(Ligne, 26).Value <> "" Then MailCopie = MailCopie & "; " & .Cells(Ligne, 26).Value
    Next Ligne
End With

 Set ObjOutlook = New Outlook.Application
 Set oBjMail = ObjOutlook.CreateItem(olMailItem)
 With oBjMail
 .To = MailDesti
 .CC = MailCopie
 .Subject = ActiveSheet.Range("D28").Value
 .Body = ActiveSheet.Range("D32").Value
 .Attachments.Add Dossier & Fichier
 .display
 End With

End Sub

Le "Select case Agence" va prendre la bonne colonne de ta "feuil2" suivant le bouton agence cliqué.

J'ai changé le nom de ta piece jointe puisque la variable est déja défini lors de l'export pdf de ton fichier.
J'ai également changé le "send" en "Display" pour creer le mail sans l'envoyer (le temps que tes test ne sont pas fini)

A+

Merci ;) Géniale

Bonjour à tous,

j'ai un problème sur mon code, concernant l'enregistrement en PDF dans la macro, elle bloque sur l'"activeSheet" alors que quand je fait un teste en lancent juste l'enregistrement du PDF sa marche, je ne comprends pas l'erreur, merci pour votre aide, merci par avance de votre aide :

Sub Mail_H_Interim()
'enregistrement PDF des heures intérim

Dim Utilisateur As String, Dossier As String, Fichier As String

Utilisateur = Environ("username")

Dossier = "C:\Users\" & Utilisateur & "\CIME CAPITAL\Base Documentaire - Documents\7- Supply Chain\7.21 Management\RH\Archive PDF H Inétim 2024\"
Dossier = "C:\TEMP_GED\"
Fichier = "Présence Log TPT 2024 V1.pdf"

ActiveWorkbook.Save

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Dossier & Fichier, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False


'Transmission du mail
Dim ObjOutlook As New Outlook.Application
Dim oBjMail
Dim MailDesti As String, MailCopie As String
Dim Ligne As Byte, Colonne As Byte

'Changer la valeur de la variable Colonne suivant le bouton de l'agence d'intérim selectionné
Select Case Agence
Case "BIRD"
Colonne = 16
Case "ALP'EMPLOI"
Colonne = 18
Case "MANPOWER"
Colonne = 20
Case "INITIAL"
Colonne = 22
Case "START PEOPLE"
Colonne = 24
End Select

With Base_de_données
For Ligne = 15 To 33
If .Cells(Ligne, Colonne).Value <> "" Then MailDesti = MailDesti & "; " & .Cells(Ligne, Colonne).Value
If .Cells(Ligne, 26).Value <> "" Then MailCopie = MailCopie & "; " & .Cells(Ligne, 26).Value
Next Ligne
End With

Set ObjOutlook = New Outlook.Application
Set oBjMail = ObjOutlook.CreateItem(olMailItem)
With oBjMail
.To = MailDesti
.CC = MailCopie
.Subject = ActiveSheet.Range("D28").Value
.Body = ActiveSheet.Range("D32").Value
.Attachments.Add Dossier & Fichier
.Display
End With

End Sub

Bonjour Geof52,

Je me permet de revenir vers toi un peu tardivement par rapport à mon dernier message, cause de vacance.

je rencontre un problème avec le code que tu m'as fourni, j'ai un débogage, peux tu m'aider, merci par avance :

image

Sub Mail_H_Interim()

'enregistrement PDF des heures intérim

Call ExportPDF_H_Interim

'Transmission du mail

Dim ObjOutlook As New Outlook.Application

 Dim oBjMail Dim MailDesti As String, MailCopie As String

 Dim Ligne As Byte, Colonne As Byte

'Changer la valeur de la variable Colonne suivant le bouton de l'agence d'intérim selectionné

 Select Case Agence

 Case "BIRD"

 Colonne = 16

 Case "ALP'EMPLOI"

 Colonne = 18

 Case "MANPOWER"

 Colonne = 20 Case "INITIAL"

 Colonne = 22

 Case "START PEOPLE"

 Colonne = 24

 End Select

 With Base_de_données

 For Ligne = 15 To 33

 If .Cells(Ligne, Colonne).Value <> "" Then MailDesti = MailDesti & "; " & .Cells(Ligne, Colonne).Value

 If .Cells(Ligne, 26).Value <> "" Then MailCopie = MailCopie & "; " & .Cells(Ligne, 26).Value

 Next Ligne

 End With

 Set ObjOutlook = New Outlook.Application

 Set oBjMail = ObjOutlook.CreateItem(olMailItem)

 With oBjMail

 .To = MailDesti

 .CC = MailCopie

 .Subject = ActiveSheet.Range("D28").Value

 .Body = ActiveSheet.Range("D32").Value

 .Attachments.Add Dossier & Fichier

 .Send

 End With

 End Sub

Bonjour,

Je dirais que le soucis vient de :

With Base_de_données

Si "Base_de_données" est le nom de ta feuille, essai avec

With Sheets("Base_de_données")

Sinon envoi le fichier sans données confidentielles.

Bonjour Geof52,

Merci pour ton retour, mais cela n'a pas réglé mon problème. Je te joint le fichier comme demandé.

merci par avance de ton aide

Bonjour,

Il faudra définir la variable agence en public (voir en haut du module 5):

Public Agence As String

Il faut que chaque bouton d'agence soit affecté a une macro différente ou l'on change la valeur de la variable "Agence" (exemple avec Start People) :

Sub StartPeople()
Agence = "START PEOPLE"
Mail_H_Interim
End Sub

En affectant le bouton a sa macro,

image

On va changer la valeur de la variable "Agence" (suivant le bouton cliqué)

image

La valeur de la variable va donner la colonne suivant l'agence (ici colonne 24)

image

_________________________________________________________

et cette ligne qui ne peut pas fonctionner :

With Base_de_données

a remplacer par

With Sheets("Base de données")

Ou

With Feuil65
image

Pour chercher sur la feuille "Base de données" les adresses mails des agences (suivant le bouton qui t'indique la bonne colonne)

Tu as déja remplacé les Display par Send, attention a pas envoyé 50 mails en faisant tes boutons.

A+

Bonjour Geof52,

Merci bien pour ton aide, plus de problème sur l'envoi de mail. Néanmoins, j'ai un autre souci :

image

et une autre question est-il possible de confirmer l'envoi par un MSG box ?

encore merci pour ton aide

Eddy

J'ai mis ces 3 lignes en commentaire permettant la sauvegarde de la piece jointe car je n'ai pas les dossiers sur mon PC, supprime les apostrophes et ça devrait fonctionner.

image

Pour le message, oui en rajoutant les deux ligne ci desous qui ne sont pas en vert :

image
    If MsgBox("Veux-tu envoyer le mail ?", vbYesNo + vbInformation, "Envoi mail") = vbYes Then
    End If

Re Geof52,

je me retrouve avec une erreur de compilation en ajoutant le code "MsgBox" :

image

J'ai peut-être fait une erreur en recopiant, mais il ne me semble pas ?

Concernant les apostrophe je les avaient déjà supprimé et le problème persiste.

Je suis désolé de te déranger, mais c'est au delà de mes connaissances

Merci encore

Eddy

Non l'erreur vient de moi, le "End if" doit etre sous le "End With"

Pour la piece jointe,

image

Regarde la valeur des variables Dossier et Fichier pour voir si le lien existe bien

Geof52,

Effectivement j'ai un msg d'erreur concernant le lien "Dossier & Fichier".

est-il nécessaire de rajouter la variable dans le code mail ? elle se trouve dans le code "Export PDF" :

image

Ici tu as séparé la partie enregistrement du pdf avec la creation du mail, le truc a faire c'est comme pour la variable "Agence" déclarer la variable en public pour qu'elle puisse etre utilisé partout en gardant en mémoire sa valeur.

Donc normalement chez toi dossier et Fichier n'ont pas de valeur pour corriger, supprime la déclaration de variable dans la partie "Sub ExportPDF_H_Interim()"

Dim Utilisateur As String, Dossier As String, Fichier As String

Et en haut du module tu les rajoute à celle déja déclaré "Agence"

image

Tu pourra également supprimer la partie enregistrement de pdf sur la procedure "Sub Mail_H_Interim_BIRD()" et remplacé par

Call ExportPDF_H_Interim

Puisque les variables Utilisateur / Dossier et Fichier sont les mêmes

Re Geof52,

ça marche

Merci encore pour ton aide et ta réactivité au top

Eddy

Rechercher des sujets similaires à "mail automatique ajout destinataire copie"