XL 2016 Joindre par mail un fichier.pdf personnalité selon le prénom trouvé dans le titre du pdf

Webperegrino

XLDnaute Impliqué
Supporter XLD
Bonjour le Forum

Je désire, expédier un message commun à différentes personnes - j'ai une longue liste et je le fais manuellement et ça me prend un temps énorme - qui contient :

  • trois PDF communs
  • en Objet : Planning individuel.pdf et trois fichiers .pdf joints
  • un corps de message commun simple du style :
Bonjour,
Bonne réception de ces quatre documents,
Webperegrino

Et en pièces jointes trois premiers fichiers .pdf

J’aimerai automatiser, par l’appui d’un bouton de commande (Contrôle ActiveX) et en utilisant ma base Excel et les mails via Outllok :
  • l’ajout à chaque nouveau message, d’un quatrième fichier .pdf qui est personnalisé dont le titre contient le prénom du correspondant.
  • l’envoi du message ainsi contruit
  • puis passer au correspondant suivant jusqu’à la fin de ma liste de la colonne B et colonne L de ma base excel.
Le message serait ainsi composé du 4ème PDF sachant que dans ma base excel :
  • Le prénom est dans la feuille « Listes Correspondants » en colonne Range(« B3 :B »& Cells(Rows.count, 2).
  • L’adresse Mail de la personne se trouve sur la même ligne en colonne L soit cells(lig,12).
  • Le chemin de mon fichier est du genre G:\Fxxxxx\Fdf NICOLE\FaNICOLE 2024\
  • Le dossier des fichiers .pdf où se trouve celui du bon destinataire contenant le prénom cherché dans son titre ; ce dossier se nomme PLANNINGS INDIV
Si j’écris par exemple pour commencer…
…à Patrice DUTOUT (colonne B)
…à l’adresse patrice.dutout@excel.com sur la même ligne en colonne L,
comment par vba y joindre son planning individuel nommé « Fiche individuelle de Patrice DUTOUT.copie du jeudi 4juillet.pdf » ?
…parmi tous les autres dont le titre est ainsi construit ?

Et grâce à ce bouton automatiser l’envoi identique au suivant, jusqu’à la fin de la liste de mes correspondants ?

Ensuite je saurais monter la boucle pour l’envoi en salve des messages :

For lg = 3 toFin : … : Next lg

Merci pour vos suggestions,
Webperegrino
 
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Le Forum,
Bonjour kiki29,
Merci pour cette piste.
J'ai trouvé dans #4-Rechercher un mot dans un fichier PDF via Acrobat et dans #7-PDFCreator Envoi par Mail d'un fichier PDF protégé quelques lignes de codes.
Je vais essayer de placer cela dans mon application.
Ça m'a l'ai un peu compliqué pour moi mais je vais tenter d'adapter cela.
Je reviens après la tentative.
Merci en tout cas pour votre diligence à me répondre.
Webperegrino
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Le Forum,
Voici une approche.
En feuille 2 mon problème se passe dans la colonne I.
Comment aller avec du vba chercher et placer son lien d'accès en colonne I, le fichier de Sébastien (avec le chemin d'accès au Dossier qui se trouve en répertoire G:\...\PLANNINGS INDIV\ + le bon fichier.pdf dont le titre contient "Sébastien" ?
Merci
Webperegrino
 

Pièces jointes

  • PLANNI_envoi de courriel en nombre.xlsm
    66.8 KB · Affichages: 1

Webperegrino

XLDnaute Impliqué
Supporter XLD
Le Forum,
KiKi29,
TooFatBoy,
Je crois avoir trouvé la solution, aussi...
Voici ma solution, avec un bouton MISE A JOUR dans la colonne du Fichier Individuel à trouver, avec son chemin.
Je vais essayer la proposition de TooFatBoy également.
Webperegrino
 

Pièces jointes

  • PLANNI_envoi de courriel en nombre(V1).xlsm
    70.1 KB · Affichages: 4

TooFatBoy

XLDnaute Barbatruc
Je vais essayer la proposition de TooFatBoy également.

Alors voilà une proposition de piste pour chercher si un fichier correspondant au prénom existe :
VB:
Sub ChercheFichier(Prenom As String)
'
    CheminDossier = ThisWorkbook.Path & "\Plannings personnalisés\"
    NomFichier = Dir(CheminDossier & "*" & Prenom & "*")
    While NomFichier <> ""
        Debug.Print NomFichier
        NomFichier = Dir
    Wend

End Sub



Et une proposition pour l'envoie des mails, en utilisant la spécificité des TS :
(ici le TS s'appelle t_Messages)
VB:
Sub Envoi_mails()
'
Dim i As Long
Dim OA As Object
Dim msg As Object
Dim Tablo As Range

    Set OA = CreateObject("outlook.application")

    Set Tablo = Range("t_Messages")

    For i = 1 To Tablo.ListObject.ListRows.Count

        If Tablo(i, 10).Value <> "NON" Then

            Set msg = OA.CreateItem(0)

            ' Destinataire
            msg.To = Tablo(i, 1).Value

            ' Destinataire en Copie Carbonne
            If Tablo(i, 2).Value <> "" Then msg.CC = Tablo(i, 2).Value

            ' Destinataire en Copie Carbonne Invisible
            If Tablo(i, 3).Value <> "" Then msg.BCC = Tablo(i, 3).Value

            ' Objet du mail
            If Tablo(i, 4).Value <> "" Then msg.Subject = Tablo(i, 4).Value

            ' Coprs du mail ( /!\ avec chr(10) ou <Alt>+<Entrée> /!\ )
            If Tablo(i, 5).Value <> "" Then msg.Body = Tablo(i, 5).Value

            ' Pièces jointes communes
            If Tablo(i, 6).Value <> "" Then msg.Attachments.Add Tablo(i, 6).Value   ' Pièce jointe 1
            If Tablo(i, 7).Value <> "" Then msg.Attachments.Add Tablo(i, 7).Value   ' Pièce jointe 2
            If Tablo(i, 8).Value <> "" Then msg.Attachments.Add Tablo(i, 8).Value   ' Pièce jointe 3

            ' Pièce jointe personnalisée
'            If Tablo(i, 9).Value <> "" Then msg.Attachments.Add Tablo(i, 9).Value   ' Pièce jointe 4

            msg.Display
'            msg.Send

            Tablo(i, 11).Value = "Envoyé"

        End If

    Next i

    MsgBox "Messages Envoyés", vbInformation, "Misson accomplie !"

End Sub
 

TooFatBoy

XLDnaute Barbatruc
En pièce jointe, une proposition totalement différente.


Ici le principe est de commencer par paramétrer l'e-mail qui sera envoyé.
Pour cela, remplir le tableau de la feuille "Paramètres e-mail".

Pour les chemins des Pièces Jointes Communes ainsi que celui de la Pièce Jointe Personnalisée, il est possible de donner des chemins relatifs à l'emplacement du classeur, en commençant le chemin par un point.

Pour le nom du fichier personnalisé, vu qu'il est différent pour chaque personne, tu peux intégrer des en-têtes du tableau des correspondants en les mettant entre crochets. Chaque en-tête entre crochets sera automatiquement remplacé par la valeur de la cellule de la colonne correspondante.
Exemple : Planning [Prénom] [Nom].pdf


Une fois que le mail est paramétré, aller dans la feuille "Correspondants" et mettre "oui" dans la colonne "A envoyer" sur les lignes pour lesquelles le mail doit être envoyé.

Lors de la création du mail, les 7 dernières colonnes du tableau de la feuilles "Correspondants" sont mises à jours avec les mêmes données que celles du mail envoyé.
Ainsi, si un fichier est trouvé il apparaîtra dans le tableau, sinon la cellule restera vide.
Enfin, la date d'envoi du mail est inscrite en colonne "Envoyé le".
 

Pièces jointes

  • Mailing-planning-en-nombre.xlsm
    41.8 KB · Affichages: 6
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Bonsoir Le Forum,
Bonsoir TooFatBoy,

Une épine en moins !
Dans mon vrai fichier, je viens d'expérimenter La Solution du post précédent #7.
Cela fonctionne à merveille !

Avec cela je me trouve dans le même état d'euphorie que mon petit-fils qui vient d'avoir ses mentions aux deux Bacs qu'il vient de passer...
Je vois une simplification énorme pour mes prochains envois de pièces jointes dans des courriels en masse (aux alentours de 80 mails personnalisés) ; ça simplifie grandement les choses !

Merci pour l'aide précieuse.
J'espère que cette application sera aussi étudiée et surtout pratiqué par d'autres d'entre nous ici.

Cordialement,
Webperegrino
 

Discussions similaires

Statistiques des forums

Discussions
313 769
Messages
2 102 234
Membres
108 181
dernier inscrit
Chr1sD