Envoyer un fichier pdf par mail via outlook
Bonsoir,
Je suis actuellement à la recherche d'une solution pour faire une macro qui selon la personne qui l’utilise, (un raccourci par personne pour exécuter la macro ou un bouton) enregistre sous le pdf avec sa signature et cache l'autre et envoie par mail selon le contact renseigné.
j'ai réussi à faire la génération du pdf mais je n'arrive pas à l'envoyer par mail, ni à sélectionner la signature de la personne qui exécute la macro.
ci joint le fichier,
Cordialement,
bonsoir,
proposition de correction pour l'envoi de mail.
par contre je n'ai pas trouvé les macros correspondant au ctrl q et ctrl k pour les signatures
Sub Bouton7_Clic()
Application.CutCopyMode = False
'si raccourci ctrl q (mise en forme + signature butet dans le pdf)
'si raccourci ctrl k (mise en forme + signature charluet dans le pdf)
'cacher celui qui n'est pas concerné ((((((((((((((pas ok)))))))))))))
' copie la sélection puis la mets en forme dans la feuille new (((ok)))
v = Worksheets("test").Range("A3") 'variable pour le pdf (((ok)))
'mise en forme
Selection.Copy 'copier la sélection B3 à P3
Sheets("new").Range("B2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False ' en B2 sur la feuille new
Range("B2:C26").NumberFormat = "m/d/yyyy" ' mettre les bons formats
Range("D2:M26").NumberFormat = "General"
Range("N2:O26").NumberFormat = "0"
Range("P2:P26").NumberFormat = "General"
ChDir "C:\Users\slim\Desktop"
'fin de la mise en forme ok
'enregistre sous pdf avec incrémentation d'un numéro qui est la variable v qui est en a3 ((((ok))))
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\slim\Desktop\commande transport " & v & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Range("A2:P26").ClearContents
Range("A2").Select
'pour envoie par mail en fonction du raccourci 'si raccourci ctrl q (mise en forme + signature butet dans le mail)
'si raccourci ctrl k (mise en forme + signature charluet dans le mail)
'et en fonction du transporteur en cellule k2 de la feuille test aller chercher les mail corespondant dans la feuille carnet d'adresse
doc = "C:\Users\slim\Desktop\commande transport " & v & ".pdf" 'recuperer le pdf
transporteur = Worksheets("test").Range("K3") 'récupérer le nom du transporteur
Set re = Sheets("carnet d'adresses").Range("A:A").Find(transporteur, lookat:=xlWhole) 'rechercher transporteur dans carnet d'adresse
MsgBox "transporteur " & transporteur & " non trouvé dans carnet d'adresse": Exit Sub 'transporteur non trouvé
Else
i = 2 'si trouvé
destinataires = "" ' on prépare la liste des destinataires
While re.Offset(, i) <> "" ' tant qu'il y a des adresses mail pour ce transporteur
destinataires = destinataires & re.Offset(, i) & ";" ' on l'ajoute à la liste
i = i + 1
Wend
End If
'on ouvre outlook
Set ol = CreateObject("Outlook.Application")
' on crée un nouveau mail
Set olmail = ol.CreateItem(olMailItem)
With olmail ' dans ce nouveau mail
.To = destinataires ' destinatiares
.Subject = "commande de transport" 'Sujet
.Body = "Bonjour," & Chr$(13) & Chr$(13) & "Veuillez trouver ci-joint notre commande de transport, merci de nous en accuser réception." & Chr$(13) & Chr$(13) & "Cordialement." & Chr$(13) & " Aurélien Butet" & Chr$(13) & "Delipapier" 'Corps du mail
.Attachments.Add doc 'attachment pdf
.Display '.Send 'On peut switcher entre .send et .display selon que l'on veut envoyer le mail (send) ou seulement le préparer et le vérifier(display)
End With
End Sub
Bonsoir,
Merci h2so4 pour le code, il fonctionne bien sauf pour les adresses mail qui ne se mettent pas dans Outlook.
Il y a une erreur au niveau de la recherche du transporteur c'est en fonction de la cellule "k2" du fichier "charluet" que l'ont doit associés les mails correspondants qui se trouve dans "carnet d'adresses" mais je n'est pas réussi à réglé le problème par contre, j'ai réussi à séparer en fonction des personnes qui utilise le fichier.
Ci joint le fichier
Merci d'avance
Cordialement,
bonsoir,
le code que je t'ai fourni fonctionne avec le fichier que tu as joint initialement. il recherche dans le carnet d'adresse le nom du transporteur trouvé dans la cellule K3. la cellule K2 contient le titre de la colonne. J'ai fait l'hypothèse qu'il ne pouvait y avoir qu'un seul nom de transporteur mentionné sur le document PDF.
Que faut-il faire quand il y a d'autres transporteurs en colonne K ? faut-il les rajouter à la liste des destinataires et leur envoyer le même document PDF ?
Bonjour,
il y a une modification à faire au niveau de la recherche du transporteur, il y a une erreur au niveau de re offset et il manquait un If au début je que crois que je l'ai bien placé mais je ne sais pas pourquoi ça me met une autre erreur
If transporteur = Worksheets("test").Range("K2") Then 'récupérer le nom du transporteur en k2
Set re = Sheets("carnet d'adresses").Range("A:A").Find(transporteur, lookat:=xlWhole) 'rechercher transporteur dans carnet d'adresse
MsgBox "transporteur " & transporteur & " non trouvé dans carnet d'adresse": Exit Sub 'transporteur non trouvé
Else
i = 2 'si trouvé
destinataires = "" ' on prépare la liste des destinataires
While re.Offset(, i) <> "" ' (((((il me signale une erreur ici))))) tant qu'il y a des adresses mail pour ce transporteur
destinataires = destinataires & re.Offset(, i) & ";" ' on l'ajoute à la liste
i = i + 1
Wend
End If
Bonjour,
il manquait effectivement un if. j'ai fait la correction.
sur base du fichier que tu as donné, le nom du transporteur que je trouve dans la feuille test se trouve bien en K3 (il s'agit de jeantet)
Sub Bouton7_Clic()
Application.CutCopyMode = False
'si raccourci ctrl q (mise en forme + signature butet dans le pdf)
'si raccourci ctrl k (mise en forme + signature charluet dans le pdf)
'cacher celui qui n'est pas concerné ((((((((((((((pas ok)))))))))))))
' copie la sélection puis la mets en forme dans la feuille new (((ok)))
v = Worksheets("test").Range("A3") 'variable pour le pdf (((ok)))
'mise en forme
Selection.Copy 'copier la sélection B3 à P3
Sheets("new").Range("B2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False ' en B2 sur la feuille new
Range("B2:C26").NumberFormat = "m/d/yyyy" ' mettre les bons formats
Range("D2:M26").NumberFormat = "General"
Range("N2:O26").NumberFormat = "0"
Range("P2:P26").NumberFormat = "General"
ChDir "C:\Users\slim\Desktop"
'fin de la mise en forme ok
'enregistre sous pdf avec incrémentation d'un numéro qui est la variable v qui est en a3 ((((ok))))
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\slim\Desktop\commande transport " & v & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Range("A2:P26").ClearContents
Range("A2").Select
'pour envoie par mail en fonction du raccourci 'si raccourci ctrl q (mise en forme + signature butet dans le mail)
'si raccourci ctrl k (mise en forme + signature charluet dans le mail)
'et en fonction du transporteur en cellule k2 de la feuille test aller chercher les mail corespondant dans la feuille carnet d'adresse
doc = "C:\Users\slim\Desktop\commande transport " & v & ".pdf" 'recuperer le pdf
transporteur = Worksheets("test").Range("K3") 'récupérer le nom du transporteur
Set re = Sheets("carnet d'adresses").Range("A:A").Find(transporteur, lookat:=xlWhole) 'rechercher transporteur dans carnet d'adresse
if re is nothing then
MsgBox "transporteur " & transporteur & " non trouvé dans carnet d'adresse": Exit Sub 'transporteur non trouvé
Else
i = 2 'si trouvé
destinataires = "" ' on prépare la liste des destinataires
While re.Offset(, i) <> "" ' tant qu'il y a des adresses mail pour ce transporteur
destinataires = destinataires & re.Offset(, i) & ";" ' on l'ajoute à la liste
i = i + 1
Wend
End If
'on ouvre outlook
Set ol = CreateObject("Outlook.Application")
' on crée un nouveau mail
Set olmail = ol.CreateItem(olMailItem)
With olmail ' dans ce nouveau mail
.To = destinataires ' destinatiares
.Subject = "commande de transport" 'Sujet
.Body = "Bonjour," & Chr$(13) & Chr$(13) & "Veuillez trouver ci-joint notre commande de transport, merci de nous en accuser réception." & Chr$(13) & Chr$(13) & "Cordialement." & Chr$(13) & " Aurélien Butet" & Chr$(13) & "Delipapier" 'Corps du mail
.Attachments.Add doc 'attachment pdf
.Display '.Send 'On peut switcher entre .send et .display selon que l'on veut envoyer le mail (send) ou seulement le préparer et le vérifier(display)
End With
End Sub
Merci beaucoup cela fonctionne à merveille, par contre j'ai une formule index/equiv au niveau de ma feuille test qui ne fonctionne plus à quoi cela est-il dû ?
Ci joint le fichier
Bonjour,
il ne trouve pas le transporteur tlm moreau dans la plage nommée TR (qui est définie $b$1:$s$1 ce qui n'est pas correct).
la macro que je t'ai fournie ne touche pas à ceci.
Ok merci encore,
Je vais me renseigner sur le forum pour identifier un sujet similaire concernant la formule index et equiv, cela se peut-il que c'est à cause des formules dans le tableau des prix ? car avant il n'y avait que les chiffres dans les cellules et non pas une formule.
Sujet Clos
Bonne soirée