Macro envoi PJ dans un mail suivant chemin d'accès d'une cellule

Fermé
Jon40 - 10 nov. 2021 à 16:56
 Jon40 - 14 nov. 2021 à 14:23
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 :
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
A voir également:

10 réponses

f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 1 708
14 nov. 2021 à 09:00
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
1
f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 1 708
Modifié le 14 nov. 2021 à 13:53
Re,

Auriez-vous une idée ?
Oui, vous devez rechercher quel fichier Accuse pdf est dans le repertoire Commande
1
f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 1 708
11 nov. 2021 à 06:54
Bonjour,

Pas de " devant chemin lignes Attachments.Add
0
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
0
f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 1 708
Modifié le 12 nov. 2021 à 07:00
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
0
Bonjour,

Oui c'est ca.

Le classeur est à la racine d'une ressource \\xxx\123 et les liens hypertextes pointent vers des répertoires de cette même ressource (en général \\xxx\123\1-123\xxx\Commande et après original et accusé de reception.pdf à joindre)

Bonne journée
0
f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 1 708 > Jon40
12 nov. 2021 à 07:01
Re,
je viens de modifier le post<3>, relisez svp
0
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 1 708
13 nov. 2021 à 07:29
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.
0
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
0
f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 1 708
Modifié le 13 nov. 2021 à 17:29
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
0
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.
0
f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 1 708
14 nov. 2021 à 07:38
Bonjour,

Je recupere le fichier et regarde la chose
0
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
0
Merci encore pour toute l'aide que vous avez pu m'apporter.

Bon dimanche
0