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
.
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