ENVOI mails personnaliser suivant un nom de PDF

Bonjour,

Je suis nul en Excel. enfin, en BVA

J'aurais besoin d'envoyer régulièrement des mail en automatique.

j'ai des PDF nominatif avec numéro de matricule. exemple : GEHANT_04444_00217670_240723_065831.pdf.

J'ai un dossier avec tous les fichier PDF. comment faire pour les envoyer avec ma liste de mail ?

Je ne sais pas si c'est très clair...

Merci de votre retour !

Laurent

Bonjour GEHANT et bienvenue

Vous pouvez peut-être essayer avec ce code (Le matricule serait en colonne A, l'adresse mail en colonne D)

Sub SendEmailsWithPDFs()
    Dim OutlookApp As Object
    Dim OutlookMail As Object
    Dim ws As Worksheet
    Dim PDFPath As String
    Dim FileName As String
    Dim Matricule As String
    Dim EmailAddress As String
    Dim LastRow As Long
    Dim i As Long
    Dim Cell As Range
    Dim FoundCell As Range
    ' Définir la feuille contenant les données
    Set ws = ThisWorkbook.Sheets("Sheet1")
    ' Définir le chemin vers le dossier contenant les PDF
    PDFPath = "C:\path\to\your\pdf\folder\"
    ' Initialiser l'application Outlook
    Set OutlookApp = CreateObject("Outlook.Application")
    ' Utiliser Dir pour parcourir les fichiers PDF dans le dossier
    FileName = Dir(PDFPath & "*.pdf")
    Do While FileName <> ""
        ' Extraire le numéro de matricule du nom de fichier
        Matricule = ExtractMatricule(FileName)
        ' Chercher le matricule dans la colonne A
        Set FoundCell = ws.Columns("A").Find(What:=Matricule, LookIn:=xlValues, LookAt:=xlWhole)
        If Not FoundCell Is Nothing Then
            ' Récupérer l'adresse email correspondante dans la colonne D
            EmailAddress = ws.Cells(FoundCell.Row, "D").Value
            ' Créer un nouvel email
            Set OutlookMail = OutlookApp.CreateItem(0)
            With OutlookMail
                .To = EmailAddress
                .Subject = "Votre document PDF"
                .Body = "Bonjour," & vbCrLf & vbCrLf & "Veuillez trouver en pièce jointe votre document PDF." & vbCrLf & vbCrLf & "Cordialement,"
                .Attachments.Add PDFPath & FileName
                ' Envoyer l'email (ou utilisez .Display pour afficher avant d'envoyer)
                .Send
            End With
            ' Libérer l'objet email
            Set OutlookMail = Nothing
        End If
        ' Passer au fichier PDF suivant
        FileName = Dir
    Loop
    ' Libérer l'objet Outlook
    Set OutlookApp = Nothing
    ' Message de fin
    MsgBox "Emails envoyés avec succès!", vbInformation
End Sub

Function ExtractMatricule(FileName As String) As String
    Dim Parts As Variant
    Parts = Split(FileName, "_")
    ExtractMatricule = Parts(1)
End Function

A+

Top ! Merci je ne sais pas encore trop comment le mettre en place mais je regarde

Re,

ALT+F11 pour accéder à VBAProject, ensuite vous inséré un module et vous copier/coller le code dedans

A+

Bon... je n'y arrive pas...

Ca c'est mon fichier excel

NOM PRENOMMATRICULEMail
GEHANTLaurent09999Adresse mail de la personne
ABBOUAmir04617Adresse mail de la personne
ABDELLAOUIMohamed02967Adresse mail de la personne

Et dans un dossier j'ai des PDF avec ce type de nom :

GEHANT_09999_00217799_240724_054523.PDF

ABBOU_''04617_00217799_240724_054523.PDF

ABDELLAOUI_'02967_00217799_240724_054523.PDF

j'aimerais appuyer sur un bouton et que Excel ailles chercher dans un dossier spécifique "CONTRATS" les fichiers et les envoyer via la reconnaissance du matricule.

J'ai vraiment besoin d'un pas a pas !

Merci par avance.

Re,

Certains noms de fichier contiennent des guillemets et apostrophe !?

A+

Voila le fichier j'y mettrai sous ce format les NOMS / PRENOMDS et MATRICULES

J'ai mis un exemple de fichier pdf.

Merci beaucoup !!!!!!

Re,

Attention, d'après ce que vous avez donné en dernier comme information, il semble que vos noms de fichiers ne soient pas uniformisés !?

Certains avec des guillemets, d'autres avec un apostrophe

Voici la version qui supprime ça, pour avoir le bon matricule, la recherche ne se faisait pas dans la bonne colonne "A" au lieu de "C"

10mails-contrats.xlsm (23.40 Ko)

Le nom du fichier doit être créé qu'avec des under score et pas de tirets

A+

Bon... ca ne fonctionne pas.

J'ai mis le bon chemin d'accés.

Ca ouvre une boite de dialogue pour me demander si c'est bien le bon chemin je valide, et une autre boite de dialogue s'ouvre pour me dire mail envoyé, mais aucun mail n'est envoyé...

Re,

Vous ne connaissez pas VBA comme c'est là

Mais est-ce qu'au moins vous savez lire le français ?
Si oui, qu'est-ce que vous lisez ici

image

Le MsgBox est mal placé effectivement il faut le déplacer après le End With

Désolé... Oui en principe, je sais lire mais pour moi c'est un peu du chinois....

l'apostrophe, je l'enlève sur mon fichier Excel ? colonne C ?

Et le déplacement de MsgBox c'est d'ou a ou ?

Re,

L'apostrophe est à retiré devant le ".Send", mais j'ai modifié le code du fichier en conséquence

De plus j'ai ajouté une colonne qui indique si le contrat est déjà parti ou non
J'ai corrigé le code pour que le message n'apparaisse qu'après envoi du mail

Bonne fin de journée

Whaou Ca marche !!!!

Merci merci merci !!!

est ce que je peux abuser ?

Est-il possible de ne pas cliquer a chaque envoie que tous les PDS partent automatiquement ? sans valider a chaque fois ?

Est-il possible de rajouter une signature au Mail en automatique comme le fait Outlook ?

Apres promis j'arrête de vous embêter !

Pour la signature, j'ai réussis a mettre dans votre code une signature.

Il n'y a pas de logo, mais bon... c'est déja ca.

Bonjour,

Pour la signature, remplacez

.Body = "Bonjour," & vbCrLf & vbCrLf & "Veuillez trouver en pièce jointe votre document PDF." & vbCrLf & vbCrLf & "Cordialement,"

Par

.HTMLBody = "Bonjour,<BR><BR>" _
            & "Veuillez trouver en pièce jointe votre document PDF.<BR><BR>" _
            & "Cordialement," & .HTMLBody

Le display du début, permet d'afficher la signature

C'est le MSGBOX qui vous demande de cliquer à chaque envoi, il suffit de supprimer la ligne

          ' Message de fin
          MsgBox "Emails envoyés avec succès!", vbInformation

Cordialement

TOP !!!!!

Merci beaucoup !

Re Bonjour,

Pour la signature, ca fonctionne ! merci.

comment faire pour que le texte soit séparé ?

Dans mon mail, ca donne ca :

"Bonjour, Veuillez trouver en pièce jointe, votre contrat à nous retourner signé."

Bien cordialement,

Et dernière question, (j'espère),

.HTMLBody = "Bonjour," & vbCrLf & vbCrLf & "Veuillez trouver en pièce jointe, votre contrat à nous retourner signé." & vbCrLf & vbCrLf & .HTMLBody
.Attachments.Add PDFPath & FileName

Dernières petite questions j'ai réussis a envoyer mes doc PDF c'est top en revanche, j'ai une question quand, un agent a plusieurs PDF ?

J'ai testé, il n'en envoie qu'un et les deux autres ne parte pas ?

Une méthode possible ?

Et dernière question, (j'espère),

Ex:

GEHANT_09999_0112l9116.pdf
GEHANT_09999_00145565.pdf
GEHANT_09999_00218914.pdf

En tout cas, je vous remercie pour votre réactivité et votre savoir faire. je vais m'acheter un livre Sur la programmation BVA Excel. je trouve ca patronnant.

Cordialement,

Laurent

Rechercher des sujets similaires à "envoi mails personnaliser suivant nom pdf"