Envoi d'un pdf depuis Gmail

Bonsoir à tous,

Alors le sujet semble avoir été abordé mais je ne trouve pas de réponse à ma problématique.

J'ai une macro qui génère des PDF en leur donnant un certain nom disons "B7_C7_D7.pdf" "B8_C8_D8.pdf" etc

Je souhaite dans un second temps envoyer ces pdf à différentes personnes via une boite Gmail. La premier document à l'adresse indiquée en A7, le deuxième à A8 etc.

Question : Est-il possible d'envoyer un tel mail, c'est-à-dire :
- retrouver un pdf (dans un dossier précis) grâce à des numéros de cellules

- accéder à une boite gmail (ouverte en amont pourquoi pas)

- envoyer chaque pdf à la bonne adresse en mettant un objet et un texte type (soit dans la macro, ou sur la feuille Excel) ?

Je vous remercie d'avance pour votre aide !!!

Cordialement

Razid

bonjour,

merci de mettre un fichier exemple représentatif de ce que tu as. Pour pouvoir envoyer un mail avec annexe, il faudra que ton classeur contienne au minimum l'info permettant de retrouver l'annexe pdf et la liste des destinataires associés

Bonjour !

Je vous joins un fichier test qui illustre la demande. J'ai sur la feuille 1 une série de données concernant des personnes, et sur la feuille 2 ces données sont représentées sous forme de carte. J'ai une macro qui permet d'imprimer en pdf une carte (donc la feuille 2) pour chaque personne, en faisant varier la cellule A1.
Cette carte est enregistrée dans un certain dossier sous le nom "Nom_Prenom_Poste.pdf". Par exemple, on aura "Durand_Jean_Président.pdf".

Je souhaite maintenant pouvoir envoyer ces cartes à chacune des personnes concernées, par mail (Gmail).
L'idée est de retrouver la carte dans le dossier en question et l'envoyer à l'adresse indiquée sur la feuille 1. Bien sur, l'idée est de faire cela pour chaque personne automatiquement

4test-1.xlsx (11.24 Ko)

.
Idéalement, il faudrait pouvoir mettre un texte dans le mail dans le genre : Cher(e) "Prénom" "Nom", Veuillez trouver votre carte de "Poste"...

Je vous remercie d'avance pour toute aide ou piste que vous pourriez apporter !

Cordialement

Razid

bonjour,

voici un bout de code à adapter. pour que CDO fonctionne il faut ajouter la référence Microsoft CDO WINDOWS FOR 2000 via l'éditeur VBE,menu outils références.

et adapter les instructions là où j'ai indiqué à adapter. (code non testé)

Sub aargh()
    'Ajout référence  
    ' via menu vbe outils references
    Dim cdo_msg As new CDO.Message

    'configuration message
    cdo_msg.Configuration.Fields(cdoSMTPServer) = "smtp.gmail.com"
    cdo_msg.Configuration.Fields(cdoSMTPConnectionTimeout) = 60
    cdo_msg.Configuration.Fields(cdoSendUsingMethod) = cdoSendUsingPort
    cdo_msg.Configuration.Fields(cdoSMTPServerPort) = 465
    cdo_msg.Configuration.Fields(cdoSMTPAuthenticate) = cdoBasic
    cdo_msg.Configuration.Fields(cdoSMTPUseSSL) = True
    cdo_msg.Configuration.Fields(cdoSendUserName) = "xxxxxxxxxx@gmail.com" '<- à adapter le compte gmail de l'expéditeur
    cdo_msg.Configuration.Fields(cdoSendPassword) = "ppppppppp" '<- à adapter le mot de passe associé
    cdo_msg.Configuration.Fields.Update
    repertoirepdf = "d:\downloads\" '<- à adapter
    With Sheets("Feuil1") '<-à adapter nom de la feuille contenant la liste des personnes et leurs infos
        dl = .Cells(Rows.Count, 2).End(xlUp).Row
        For i = 6 To dl
            nom = .Cells(i, 2) 'colonne B
            prenom = .Cells(i, 3) 'colonne C
            poste = .Cells(i, 6) 'colonne F
            'remplissage et envoi message
            cdo_msg.To = .Cells(i, 4) 'colonne D
            cdo_msg.Subject = "votre fiche"
            cdo_msg.TextBody = "Cher(e) " & prenom & " " & nom & ", " & vbCrLf & vbCrLf & "Veuillez trouver votre carte de " & poste
            cdo_msg.AddAttachment (repertoirepdf & nom & "_" & prenom & "_" & poste & ".pdf")
            cdo_msg.send
        Next i
    End With
    Set cdo_msg = Nothing
End Sub

Bonjour,

Il me semble qu'il faille aussi autoriser gmail à envoyer un mail. Je viens de réessayer pour ma part avec un code que j'avais mais cela n'a pas fonctionné en l'état. Conclusion, si cela ne fonctionne pas, ce n'est pas le code d'H2SO4 que je salue qui est en cause mais les autorisations non encore obtenues de google.

In fine, pourquoi ne pas envoyer les mails via google sheets ? même si c'est l'application excel qui génère le pdf.

Si ce n'est pas déjà fait, il faudra autoriser ceci

https://myaccount.google.com/lesssecureapps

edit : je viens de refaire un essai et effectivement cela fonctionne après voir autorisé les applications moins sécurisées au travers du lien ci-dessus.

nota : j'ai juste tenté avec le code que je possède sans comparer avec celui d'h2so4 que j'estime tout à fait correct bien sûr, mon but était d'éclairer sur l'autorisation à déclarer/obtenir

Bonjour à tous,

Merci beaucoup h2so4 pour le code. Je l'ai adapté et testé... et ça marche super bien !

La seule petite chose que je n'arrive pas à résoudre c'est qu'il envoie la bonne carte au premier destinataire, puis au deuxième destinataire, il lui envoie sa carte et celle du précédent et ainsi de suite. Le dernier destinataire a toutes les cartes :D

J'imagine qu'il y a une sorte de fonction "clean" à insérer quelque part...

Merci Steelson pour les astuces, en effet j'ai du paramétrer mon mail pour autoriser les envois :)

bonsoir,

essaie ceci (non testé)

Sub aargh()
    'Ajout référence
    ' via menu vbe outils references
    Dim cdo_msg As CDO.Message

    'configuration message
    repertoirepdf = "d:\downloads\" '<- à adapter
    With Sheets("Feuil1") '<-à adapter nom de la feuille contenant la liste des personnes et leurs infos
        dl = .Cells(Rows.Count, 2).End(xlUp).Row
        For i = 6 To dl
            Set cdo_msg = CreateObject("cdo.message")
            cdo_msg.Configuration.Fields(cdoSMTPServer) = "smtp.gmail.com"
            cdo_msg.Configuration.Fields(cdoSMTPConnectionTimeout) = 60
            cdo_msg.Configuration.Fields(cdoSendUsingMethod) = cdoSendUsingPort
            cdo_msg.Configuration.Fields(cdoSMTPServerPort) = 465
            cdo_msg.Configuration.Fields(cdoSMTPAuthenticate) = cdoBasic
            cdo_msg.Configuration.Fields(cdoSMTPUseSSL) = True
            cdo_msg.Configuration.Fields(cdoSendUserName) = "xxxxxxxxxx@gmail.com" '<- à adapter le compte gmail de l'expéditeur
            cdo_msg.Configuration.Fields(cdoSendPassword) = "ppppppppp" '<- à adapter le mot de passe associé
            cdo_msg.Configuration.Fields.Update

            nom = .Cells(i, 2) 'colonne B
            prenom = .Cells(i, 3) 'colonne C
            poste = .Cells(i, 6) 'colonne F
            'remplissage et envoi message
            cdo_msg.To = .Cells(i, 4) 'colonne D
            cdo_msg.Subject = "votre fiche"
            cdo_msg.TextBody = "Cher(e) " & prenom & " " & nom & ", " & vbCrLf & vbCrLf & "Veuillez trouver votre carte de " & poste
            cdo_msg.AddAttachment (repertoirepdf & nom & "_" & prenom & "_" & poste & ".pdf")
            cdo_msg.send
            Set cdo_msg = Nothing
        Next i
    End With

End Sub

Bonjour,

Ca marche comme sur des roulettes! Merci encore poir votre aide :)

A bientôt !!

Razid

Rechercher des sujets similaires à "envoi pdf gmail"