Macro envoi PJ dans un mail suivant chemin d'accès d'une cellule
Jon40
-
Jon40 -
Jon40 -
Bonsoir,
J'aimerais ajouter deux pièces jointes dans un mail via une macro. Le chemin réseau de ces deux pièces jointes se trouve dans une cellule (lien hypertexte) en ajoutant à ce chemin \commande\commande.pdf et \commande\accuse%20reception.pdf.
J'ai essayé ce code qui ne fonctionne pas :
Auriez-vous une idée ?
Bonne soirée,
Jonathan
J'aimerais ajouter deux pièces jointes dans un mail via une macro. Le chemin réseau de ces deux pièces jointes se trouve dans une cellule (lien hypertexte) en ajoutant à ce chemin \commande\commande.pdf et \commande\accuse%20reception.pdf.
J'ai essayé ce code qui ne fonctionne pas :
Sub mail_envoi_commande()
Dim OutApp As Object
Dim OutMail As Object
Dim chemin As String
chemin = "ActiveSheet.Cells(ActiveCell.Row, 5).Value"
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = ActiveSheet.Cells(ActiveCell.Row, 9).Value
.CC = ""
.BCC = ""
.Subject = "Commande pour la formation " & ActiveSheet.Cells(ActiveCell.Row, 5).Value & ""
.Body = "Bonjour, " _
& vbCrLf & vbCrLf & _
"Je vous remercie de bien vouloir trouver ci-joint la commande concernée." _
& vbCrLf & vbCrLf & _
"Cordialement," _
& vbCrLf & vbCrLf & _
"xxx xxx" _
& vbCrLf & _
"xxxxxx" _
& vbCrLf & _
"Tel : xxx"
.Attachments.Add ("chemin &"\commande\commande.pdf")
.Attachments.Add ("chemin &"\commande\accuse%20reception.pdf")
.Display
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Auriez-vous une idée ?
Bonne soirée,
Jonathan
10 réponses
-
Re,
Devrait le faire. Remettez vos references vu que je n'ai pas le meme Office.
J'ai mis deux msgbox pour Chemin et subject pour visualiser
https://www.cjoint.com/c/KKoh5jVkuJf -
Re,
Auriez-vous une idée ?
Oui, vous devez rechercher quel fichier Accuse pdf est dans le repertoire Commande -
Bonjour,
Pas de " devant chemin lignes Attachments.Add-
Bonjour,
Je vous remercie mais ça ne marche pas. J'ai remarqué que lorsque je modifiais le chemin réseau de la cellule contenant le chemin il me tronque la partie serveur.
J'ai alors essayé de changer le chemin en mettant :
chemin = Workbooks(ActiveWorkbook.Name).Path
et
.Attachments.Add (chemin & "\" & ActiveSheet.Cells(ActiveCell.Row, 5).Value & "\COMMANDE\COMMANDE.pdf")
Ca n'a pas marché. J'ai essayé d'enlever au cas ou le "\", idem.
Je ne comprends pas pourquoi cela ne marche pas.
Pour une autre macro dans laquelle je mets un lien hypertexte vers la ressource cela fonctionne et j'ai inséré :
chemin = Workbooks(ActiveWorkbook.Name).Path
"" & "<a href=""" & chemin & "\" & ActiveSheet.Cells(ActiveCell.Row, 5).Hyperlinks(1).Address & """>" & ActiveSheet.Cells(ActiveCell.Row, 5).Value & "</a>" & "<br><br>" & _
Auriez-vous une idée ?
Bonne journée
Jonathan
-
-
Bonjour,
le chemin est dans une cellule du classeur ou vous avez le code?
Apres relecture de votre code:
chemin = "ActiveSheet.Cells(ActiveCell.Row, 5).Value"
pourquoi vous mettez des "" partout?
Le cas present, Chemin a ce que vous avez ecrit entre "" pas la valeur de votre cellule.
Pour debugger et voir le contenu des variables, mettez des points d'arrets et passez le curseur souris sur les dites variables.
Vous auriez constate ligne.Subject = "Commande pour la formation " & ActiveSheet.Cells(ActiveCell.Row, 5).Value & ""
c'est ok. Virez le & "", sert a rien-
-
Bonsoir,
Dans le chemin sans les "" le chemin n'est pas trouvé pour prendre la pièce jointe. (j'ai inscrit :
chemin = ActiveSheet.Cells(ActiveCell.Row, 5).Value
et
.Attachments.Add (chemin & "\COMMANDE\COMMANDE.pdf")
Lorsque je fais le point d'arrêt la valeur qui ressort est le texte indiqué et non le chemin réseau.
pour la partie .subject elle ne fonctionne plus sans les & et les "". Le code fonctionne avec les & et "" sans la partie .attachments.Add.
J'ai essayé de modifier le code en mettant :
chemin = Workbooks(ActiveWorkbook.Name).Path & "\" & ActiveSheet.Cells(ActiveCell.Row, 5).Value & ""
.Attachments.Add (chemin & "\COMMANDE\COMMANDE.pdf")
Lors je passe la souris sur chemin il m'indique le raccourcis du lecteur réseau et le nom inscrit dans la cellule, mais pas la valeur réseau.
Auriez-vous une idée ?
Bon week-end
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
En reprenant votre code de depart et en faisant les simples modif que je vous ai indiquees plus un derniere: il manuqe un espace entre le & et ".
Je l'ai mis quand j'ai modifie votre code
.Attachments.Add chemin & "\commande\commande.pdf"
Maintenant, si vous passez la souris sur ActiveSheet.Cells(ActiveCell.Row, 5).Value que voyez vous.-
Bonjour,
Lorsque je passe la souris sur ActiveSheet.Cells(ActiveCell.Row, 5) il m'affiche le numéro de ma ligne, lorsque je passe la souris sur chemin il m'affiche ce qu'il a écrit dans ma cellule.
Est-ce que le fait que j'ai utilisé une mise en forme automatique peut poser problème ?
Pour info voici le code utilisé :
Sub mail_envoi_commande()
Dim OutApp As Object
Dim OutMail As Object
Dim chemin As String
chemin = ActiveSheet.Cells(ActiveCell.Row, 5).Value
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = ActiveSheet.Cells(ActiveCell.Row, 9).Value
.CC = ""
.BCC = ""
.Subject = "Commande pour la formation " & ActiveSheet.Cells(ActiveCell.Row, 5).Value & "" 'sans le ""et & ca ne marche pas
.Body = "Bonjour, " _
& vbCrLf & vbCrLf & _
"Je vous remercie de bien vouloir trouver ci-joint la commande concernée." _
& vbCrLf & vbCrLf & _
"Cordialement," _
& vbCrLf & vbCrLf & _
"xxx" _
& vbCrLf & _
"xx" _
& vbCrLf & _
"Tel : xx"
.Attachments.Add (chemin & "\Commande\COMMANDE.pdf")
.Attachments.Add (chemin & "\Commande\ACCUSE%20DE%20RECEPTION.pdf")
.Display
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Merci pour votre patience, bon week-end
Jonathan
-
-
Bonjour,
Pouvez mettre votre fichier a dispo car y a un truc.
Pas de donnees confidentielles mais des donnees coherentes, ex votre mise en forme auto
Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com
Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
ou
www.grosfichiers.com -
Bonsoir,
Je vous remercie. Voici le lien du fichier réduit au strict nécessaire :https://www.cjoint.com/c/KKnsGPAuabp
.
Merci pour le temps passé à essayer de m'aider. -
Bonjour,
Je recupere le fichier et regarde la chose -
Mille merci !
Il avait encore du mal à repérer le chemin réseau, j'ai adapté en indiquant le Workbooks(ActiveWorkbook.Name).Path et ca fonctionne !!
Je suis un peu gêné d'abuser mais j'aurais une dernière question, je n'ai pas réussi à insérer de condition dans le choix de la pièce jointe. En gros j'aimerais éviter les erreurs d'enregistrement de fichier entre ACCUSE DE RECEPTION.PDF et ACCUSE RECEPTION.PDF. Du coup j'ai essayé des codes du genre :
If chemin & Lien & "\Commande\ACCUSE RECEPTION.pdf" <> "" then .Attachments.Add (chemin & Lien & "\Commande\ACCUSE RECEPTION.pdf") else .Attachments.Add (chemin & Lien & "\Commande\ACCUSE DE RECEPTION.pdf")
mais il me renvoie une erreur sur le WITH.
Auriez-vous une idée ?
Merci encore pour le temps passé.
Sub mail_envoi_commande2()
Dim OutApp As Object
Dim OutMail As Object
Dim chemin As String, Lien As String
chemin = Workbooks(ActiveWorkbook.Name).Path
Lien = Cells(ActiveCell.Row, 5).Hyperlinks(1).Address 'recupere le contenu complet du lien Hypertext
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = ActiveSheet.Cells(ActiveCell.Row, 9).Value
.CC = ""
.BCC = ""
.Subject = "Commande pour la formation " & ActiveSheet.Cells(ActiveCell.Row, 5).Value & ""
.Body = "Bonjour, " _
& vbCrLf & vbCrLf & _
"Je vous remercie de bien vouloir trouver ci-joint la commande concernée." _
& vbCrLf & vbCrLf & _
"Cordialement," _
& vbCrLf & vbCrLf & _
"xx" _
& vbCrLf & _
"xx" _
& vbCrLf & _
"Tel : xx"
.Attachments.Add (chemin & Lien & "\Commande\COMMANDE.pdf")
.Attachments.Add (chemin & Lien & "\Commande\ACCUSE RECEPTION.pdf")
.Attachments.Add (chemin & Lien & "\Commande\ACCUSE DE RECEPTION.pdf")
.Display
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub -