Envoi fichier par mail et Cci

Bonjour,

Je souhaite pouvoir, à partir d'un fichier excel comprenant plusieurs onglets, créer un fichier temporaire de l'onglet actif afin de n'envoyer que cet élément par mail (via outlook).

Enfin, je souhaite envoyer le mail à 2 destinataires (1 en destinataire principal et l'autre en copie cachée).

Je vous remercie pour vos conseils !

Bonsoir,

Un essai :

Option Explicit

Sub SendMail()
Dim Sh, nSh As Worksheet
Dim nWb As Workbook
Dim Obj, aApp, aMail As Object
Dim FilePath$

Set Sh = ThisWorkbook.Sheets(1) 'Choisir la sheet à envoyer.
Set nWb = Workbooks.Add()
Set nSh = nWb.Sheets(1)
Set Obj = CreateObject("WScript.Shell")
Set aApp = CreateObject("Outlook.Application")
Set aMail = aApp.CreateItem(0)

Application.ScreenUpdating = False
Sh.Cells.Copy nSh.Range("A1")
FilePath = Obj.SpecialFolders("Desktop") & "\" & "Nom_du_fichier.xlsx" 'Choisir le nom du fichier.
nWb.SaveAs FilePath 'On sauvegarde une copie sur le bureau que l'on détruira par la suite.
  With aMail
    .To = "mail@destinataire.com" 'à modifier
    .BCC = "mail@copie_cachee.com" 'idem
    .Subject = "Sujet_du_message" 'idem
    .Body = "Corps_du_message" 'idem
    .Attachments.Add FilePath 'On rajoute le fichier créé.
    .Send 'ou .Display pour afficher le mail.
  End With
  nWb.Close 'On ferme le fichier...
  Kill FilePath 'et on le détruit.

Set Sh = Nothing
Set nSh = Nothing
Set nWb = Nothing
Set Obj = Nothing
Set aMail = Nothing
Set aApp = Nothing

End Sub

Après, il n'y a pas d'obligation à détruire le fichier envoyé si par exemple vous souhaitez conserver un historique...

Cordialement,

Darzou

Bonjour et merci pour la réactivité !

J'ai essayé avec le code envoyé mais il semble que ça bloque à cet endroit :

nWb.SaveAs FilePath 'On sauvegarde une copie sur le bureau que l'on détruira par la suite.

Voici le code présent dans la macro.

Je suppose que c'est un détail mais comme je suis débutant...

Sub SendMail()
Dim Sh, nSh As Worksheet
Dim nWb As Workbook
Dim Obj, aApp, aMail As Object
Dim FilePath$

Set Sh = ThisWorkbook.Sheets(1) 'Choisir la sheet à envoyer.
Set nWb = Workbooks.Add()
Set nSh = nWb.Sheets(1)
Set Obj = CreateObject("WScript.Shell")
Set aApp = CreateObject("Outlook.Application")
Set aMail = aApp.CreateItem(0)

Application.ScreenUpdating = False
Sh.Cells.Copy nSh.Range("A1")
FilePath = Obj.SpecialFolders("Desktop") & "\" & "Modèle Assurance.xls" 'Choisir le nom du fichier.
nWb.SaveAs FilePath 'On sauvegarde une copie sur le bureau que l'on détruira par la suite.
 With aMail
    .To = "T32" 'à modifier
   .BCC = "T33" 'idem
   .Subject = "Modèle Assurance" 'idem
   .Body = "Ci-joint l'attestation d'assurance demandée." 'idem
   .Attachments.Add FilePath 'On rajoute le fichier créé.
   .Send 'ou .Display pour afficher le mail.
 End With
  nWb.Close 'On ferme le fichier...
 Kill FilePath 'et on le détruit.

Set Sh = Nothing
Set nSh = Nothing
Set nWb = Nothing
Set Obj = Nothing
Set aMail = Nothing
Set aApp = Nothing

End Sub

Pour info, à la base je suis parti d'une macro existante qui semblait fonctionner mais qui ne permettait pas d'envoyer une copie cachée.

Sub Envoi_assurance()
'
 Dim Wbk As Workbook

    ThisWorkbook.Sheets("Modèle").Copy
    Set Wbk = ActiveWorkbook
    SendKeys "{E}"
    Wbk.SendMail Recipients:=Workbooks("Modèle assurance").Worksheets("Modèle").Range("T32").Value, Subject:="Modèle assurance", ReturnReceipt:=True
    Wbk.Close savechanges:=False
    Set Wbk = Nothing
'
End Sub

Si vous écrivez msgbox filepath une ligne en dessous de filepath=... Qu est ce qui s'affiche ??

Pouvez vous aussi joindre un fichier que je vois comment sont organisées vos données puique vos champs .to et .bcc ne riquebr pas de fonctionner tels que vous les avez renseigné.

Cordialement,

Darzou

Bonjour,

Je suis novice mais ce problème m'as aussi été posé et enregistrant une macro sa ne marche pas ? Pcq pour enregistre automatiquement en PDF cela fonctionne donc peut être qu'on peut faire des envoie automatique d'une portion de classeur par outlook automatiquement.

Kant1 a écrit :

Bonjour,

Je suis novice mais ce problème m'as aussi été posé et enregistrant une macro sa ne marche pas ? Pcq pour enregistre automatiquement en PDF cela fonctionne donc peut être qu'on peut faire des envoie automatique d'une portion de classeur par outlook automatiquement.

Bonjour,

A mon sens, peut-être me trompe-je mais pour envoyer un fichier en pj, il faut qu'il existe. Une portion de fichier comme vous dites ne constitue pas un soi un nouveau fichier à moins de le créer. Aussi, pour envoyer une portion de fichier il est nécessaire de créer un fichier qui reprendra la portion du fichier source (à moins de supprimer la portion du fichier source que l'on ne souhaite pas envoyer). Il devient également nécessaire de le sauvegarder si l'on souhaite lui attribuer un nom. J'ai précisé en pj puisqu'il est autrement possible de coller le contenu d'une worksheet dans le corps du mail (mais ce n'est pas toujours joli à voir).

Cordialement,

Darzou

Lorsque je copie le texte msgbox filepath, il y a juste un doc excel vierge qui s'ouvre avec le message précisant l'adresse d'accès à mon document et je ne peux rien faire.

Je t'ai mis en PJ un imprim écran (fichier trop gros). Mais je peux te l'envoyer si tu me donnes un mail.

L'onglet modèle (que je veux envoyer) va chercher les infos dans Immatriculation.

La cellule T32 va chercher l'adresse mail du salarié dans la base et la T33 c'est l'adresse mail à laquelle je veux que ce soit également envoyé le mail en CCi.

Hum...

Bon on va faire sans le bureau ça doit être par là que ça bloque. Mais sinon je ne vois pas trop...

Option Explicit

Sub SendMail()
Dim Sh, nSh As Worksheet
Dim nWb As Workbook
Dim aApp, aMail As Object
Dim FilePath$

Set Sh = ThisWorkbook.Sheets("Modèle") 'choisir la bonne feuille
Set nWb = Workbooks.Add()
Set nSh = nWb.Sheets(1)
Set aApp = CreateObject("Outlook.Application")
Set aMail = aApp.CreateItem(0)

Application.ScreenUpdating = False
Sh.Cells.Copy nSh.Range("A1")
FilePath = "choisir_un_path\" & "Modèle Assurance.xls" 'Choisir un path (peu importe lequel puisqu'on écrase le fichier à la fin)..
nWb.SaveAs FilePath 'On sauvegarde une copie.
  With aMail
    .To = range("t32")
    .BCC = range("t33")
    .Subject = "Modèle Assurance"
    .Body = "Ci-joint l'attestation d'assurance demandée."
    .Attachments.Add FilePath 'On rajoute le fichier créé.
    .Send 'ou .Display pour afficher le mail.
  End With
  nWb.Close 'On ferme le fichier...
  Kill FilePath 'et on le détruit.

Set Sh = Nothing
Set nSh = Nothing
Set nWb = Nothing
Set aMail = Nothing
Set aApp = Nothing
End Sub

Sinon le path qui remontait dans la msgbox était correct ??

Cordialement,

Darzou

J'aimerais dire que ça fonctionne mais malheureusement ça coince à ce niveau :

nWb.SaveAs FilePath 'On sauvegarde une copie.

Le débogage met cette ligne là en jaune...

C'est grave docteur ?

bonjour,

je viens de tester le code et ça fonctionne à la perfection. bon, pour ma part il me met le mail dans les indisérable mais je pense que c'est qu'une question de paramètre d'outlook...

as-tu bien mis les lignes de code à jour, par exemple le chemin :

FilePath = "choisir_un_path\" & "Modèle Assurance.xls" 'Choisir un path (peu importe lequel puisqu'on écrase le fichier à la fin)..

"choisir un path" veut dire un chemin ex : c:mes docuements\

Francky

Quel boulet !!

Merci beaucoup, ça marche...

En tout cas, très bon site. Je crois que je vais reprendre les bases avec les cours dispo sur ce site !

Cordialement,

Darzou

Bonjour Darzou , ton code ( premier envoyé) fonctionne très bien et merci ça m'aide , cependant je voudrai envoyé à plusieurs destinataires (8 adresses mail) , merci de m'aider si tu lis mon message , bien cordialement.

Lol, 3 ans plus tard content de savoir que ma prose sert toujours ! Ça fait plaisir ! Par chance j'ai eu droit à une notification par mail et je me souvenais mes identifiants ! Donc, à l'aveugle je dirais :

.To = "mail@destinataire.com;mail2@destinataire.com;mail3@destinataire.com"

Jusqu'au 8ème mail ou avec "," en séparateur à la place de ";"

Maxime

Merci Darzou et encore merci pour ce code

Rechercher des sujets similaires à "envoi fichier mail cci"