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

Rechercher des sujets similaires à "envoyer fichier pdf mail via outlook"