Envoi fichier par mail et Cci Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
o
oldschoolbob
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 29 janvier 2013
Version d'Excel : 2003

Message par oldschoolbob » 29 janvier 2013, 22:17

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 !
D
Darzou
Membre fidèle
Membre fidèle
Messages : 278
Inscrit le : 17 décembre 2010
Version d'Excel : 2010

Message par Darzou » 30 janvier 2013, 01:11

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
o
oldschoolbob
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 29 janvier 2013
Version d'Excel : 2003

Message par oldschoolbob » 30 janvier 2013, 10:49

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
D
Darzou
Membre fidèle
Membre fidèle
Messages : 278
Inscrit le : 17 décembre 2010
Version d'Excel : 2010

Message par Darzou » 30 janvier 2013, 11:39

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
Avatar du membre
Kant1
Membre fidèle
Membre fidèle
Messages : 159
Inscrit le : 28 janvier 2013
Version d'Excel : 2010 Fr

Message par Kant1 » 30 janvier 2013, 11:41

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.
D
Darzou
Membre fidèle
Membre fidèle
Messages : 278
Inscrit le : 17 décembre 2010
Version d'Excel : 2010

Message par Darzou » 30 janvier 2013, 16:59

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
o
oldschoolbob
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 29 janvier 2013
Version d'Excel : 2003

Message par oldschoolbob » 30 janvier 2013, 18:43

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.
Modifié en dernier par oldschoolbob le 30 janvier 2013, 22:16, modifié 1 fois.
D
Darzou
Membre fidèle
Membre fidèle
Messages : 278
Inscrit le : 17 décembre 2010
Version d'Excel : 2010

Message par Darzou » 30 janvier 2013, 19:05

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
o
oldschoolbob
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 29 janvier 2013
Version d'Excel : 2003

Message par oldschoolbob » 31 janvier 2013, 12:18

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 ?
F
Francky69100
Membre dévoué
Membre dévoué
Messages : 672
Inscrit le : 30 décembre 2009
Version d'Excel : 2013

Message par Francky69100 » 31 janvier 2013, 14:05

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
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message