Envoi ActiveSheet Excel en pdf via e-mail auto Thunder

Y compris Power BI, Power Query et toute autre question en lien avec Excel
T
Toons
Membre habitué
Membre habitué
Messages : 59
Inscrit le : 6 juin 2017
Version d'Excel : 2016 FR x64

Message par Toons » 6 juin 2017, 02:06

Bonsoir à Toutes et à Tous, membres du Forum ^^

Etant nouveau sur le forum et assez novice en VBA, je recherche une aide de votre part afin de pouvoir adapter un code VBA Excel fonctionnel pour messagerie Outllok, et ce ,afin d'envoyer cette même feuille active Excel, en pdf, automatiquement via une messagerie Thunderbird.

Celà fait 3 mois que j'écume les différents forums afin de résoudre mon problème...malheureusement...sans succès.

Je vous poste le code actuel et fonctionnel pour conversion auto pdf et envoi auto via outlook (que j'aimerai pouvoir transférer via Thunderbird).

Code VBA Excel (module macro)



Sub Mail()

Dim FileExtStr As String
Dim FileFormatNum As Long
Dim Sourcewb As Workbook
Dim destwb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim OutApp As Object
Dim OutMail As Object
Dim S As Shape
Dim sNomFic As String, sRep As String, WshShell As Object


With Application
.ScreenUpdating = False
.EnableEvents = False
End With

' Créer une instance Windows Script pour retrouver le chemin du bureau
Set WshShell = CreateObject("WScript.Shell")
sRep = WshShell.SpecialFolders("Desktop")
Set WshShell = Nothing
' Définit le nom du fichier à enregistrer
sNomFic = "Demande d'Intervention.pdf"
' Enregistrer la feuille en PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sRep & "\" & sNomFic, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False

strHtml = "Bonjour , <BR>"
strHtml = strHtml & "<BR><font size=6mm>" & _
"Vous avez reçu une nouvelle Demande d'Intervention validée à l'instant. </font></BR>"
strHtml = strHtml & "<BR><font size=6mm>" & _
"Merci de bien vouloir la prendre en compte. </font></BR>"
strHtml = strHtml & "<BR>" & _
"<font color=black>Bien cordialement.</font>" & "<BR><BR>"
strHtml = strHtml & "<BR>" & _
"<font color=blue>L'équipe Travaux. </font>" & "<BR>"
strHtml = strHtml & "<BR><BR>"
strHtml = strHtml & Environ("UserName")
strHtml = strHtml & ""

Set OutApp = CreateObject("outlook.application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "xxxxxxxxxx@hotmail.fr"
.Cc = "xxxxxxxxxx@gmail.com"
.Attachments.Add (sRep & "\" & sNomFic)
.Subject = "Nouvelle demande d'intervention reçue"
.HtmlBody = strHtml
.Send
End With

With Application
.ScreenUpdating = True
.EnableEvents = True
End With
Kill (sRep & "\" & sNomFic)
End Sub



En éspérant ne pas publier un post redondant, et en faisant appel à vos âmes de codeurs VBA Excel chevronéees ^^

Merci d'avance de vos réponses.

Bien cordialement.
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 4'842
Appréciations reçues : 235
Inscrit le : 16 mars 2017
Version d'Excel : 2010 sur PC

Message par i20100 » 6 juin 2017, 19:36

Bonjour,

à tester,
Sub Mail_TB()
Dim sNomFic As String, sRep As String
Dim tTo As String, tCC As String, tBCC As String, tSujet As String, fichier As String
Dim objShell
Set objShell = CreateObject("WScript.Shell")

sRep = ThisWorkbook.Path 'WshShell.SpecialFolders("Desktop")
sNomFic = "aaaaDemande_Intervention.pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sRep & "\" & sNomFic, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False

strHtml = "Bonjour" ' , <BR>"
strHtml = strHtml & "<BR><font size=6mm>" & _
"Vous avez reçu une nouvelle Demande d'Intervention validée à l'instant. </font></BR>"
strHtml = strHtml & "<BR><font size=6mm>" & _
"Merci de bien vouloir la prendre en compte. </font></BR>"
strHtml = strHtml & "<BR>" & _
"<font color=black>Bien cordialement.</font>" & "<BR><BR>"
strHtml = strHtml & "<BR>" & _
"<font color=blue>L'équipe Travaux. </font>" & "<BR>"
strHtml = strHtml & "<BR><BR>"
strHtml = strHtml & Environ("UserName")
strHtml = strHtml & ""

tTo = "xxxxx@xxx.xx"
tCC = "xxxxx@xxx.xx"
tBCC = "xxxxx@xxx.xx"
tSujet = "Nouvelle demande d'intervention reçue"
fichier = sRep & "\" & sNomFic

objShell.Exec ("%ProgramFiles%\Mozilla Thunderbird\thunderbird.exe -compose" & _
  " preselectid='id1'" & _
  ",to='" & tTo & "'" & _
  ",cc='" & tCC & "'" & _
  ",bcc='" & tBCC & "'" & _
  ",newsgroups=''" & _
  ",subject='" & tSujet & "'" & _
  ",body='" & strHtml & "'" & _
  ",attachment='" & fichier & "'" & _
  ",bodyislink='false'" & _
  ",type='0'" & _
  ",format='1'" & _
  ",originalMsg=''" & _
  "")
Set objShell = Nothing
End Sub
ps/ j'ai fait le test avec TB 52.1.1
info trouvé ici: http://forums.mozillazine.org/viewtopic ... #p14645711
Une pensée partagée
Lorsque tu omets de marquer la question initiale comme étant résolu, tu prives les participants du forum d’une solution possible pour eux.
Merci! de faire un clic sur le bouton résolu pour nous aider à t'aider.
isabelle
T
Toons
Membre habitué
Membre habitué
Messages : 59
Inscrit le : 6 juin 2017
Version d'Excel : 2016 FR x64

Message par Toons » 7 juin 2017, 07:40

Bonjour :-)

Je vous remercie pour la réponse qui m'a été apportée.

Je teste cela dans la matinée et reviens vers vous pour vous donner le résultat...je croise les doigts..lol.
T
Toons
Membre habitué
Membre habitué
Messages : 59
Inscrit le : 6 juin 2017
Version d'Excel : 2016 FR x64

Message par Toons » 8 juin 2017, 08:52

Bonjour le forum et navré pour le retard.

Je tenais déjà tout particulièrement à remercier SabV pour la proposition de son code qui est déjà pas mal abouti.

Cependant, afin de cloturer définitvement mon post; il me reste encore (malgré tout) 2 petits points à résoudre afin de parfaire ce code et qu'il puisse répondre de manière similaire au précédent code (qui fonctionnait à merveille sous ooutlook) sous Thunederbird.

Avec le code fourni gracieusement par SabV ci-dessus, il reste donc:

-pour la conversion de l'Active sheet en pdf, pas de soucis, ce fichier pdf est bien généré et est bien annexé au mail pour envoi. Cependant ce fichier n'est pas un fichier temporaire, puisqu'il se créé à l'emplacement du dossier à partir duquel j'exploite mon fichier Excel et ne disparait pas du dossier "racine" après l'envoi. Si je dois réutiliser la macro codée "pour export en pdf, et envoi automatique par e-mail", le fichier pdf crée dans mon dossier racine est remplacé automatiquement par le nouveau généré au moment de l'appui sur bouton macro.

-pour l'envoi d'e-mail automatique avec adjonction du fichier pdf, pas de soucis jusqu'à l'envoi généré automatiquement. En fait, au moment du clilc sur la macro, une fenêtre de rédaction nouveau message Thunderbird s'ouvre. Le mail est déjà renseigné en totalité (destinataires/Sujet/Corps du message/et pièce jointe créée), ce qui est déjà grandement bien...mais j'aurai souhaité pouvoir avoir la même réaction que la macro sous outlook. C'est à dire qu'au moment du clic macro, il puisse générer un mail avec PJ (ce que le code proposé par SabV permet déjà en quasi totalité) et qu'il soit envoyé automatiquement, sans qu'on ai aucune action supplémentaire à effectuer sur une nouvelle fenêtre de rédaction d'envoi de mail.
En clair, au moment d'utliser cette macro, le mail généré automatiquement devrait pouvoir être envoyé aussi automatiquement.

En éspérant avoir une suite de bons conseils de la part de SabV ou d'autres forumeurs, afin de finaliser ce code, étant un peu largué sur le VBA en ce qui concerne l'utilisation de la messagerie Thunderbird.

Merci d'avance de vos réponses apportées et bonne journée au forum ;-)
T
Toons
Membre habitué
Membre habitué
Messages : 59
Inscrit le : 6 juin 2017
Version d'Excel : 2016 FR x64

Message par Toons » 10 juin 2017, 05:16

Bonjour à toutes et à tous,

Je fais un pti up SVP

J'en appelle à vos aides pouvant être apportés afin que je puisse finaliser ce dossier.

Merci d'avance à toutes et à tous pour les retours possibles. Merci
T
Toons
Membre habitué
Membre habitué
Messages : 59
Inscrit le : 6 juin 2017
Version d'Excel : 2016 FR x64

Message par Toons » 13 juin 2017, 23:57

Bonsoir à toutes et à tous...chers forumeurs d'Excel-Pratique ^^ :D

Je me permet à nouveau de refaire un UP sur mon sujet, celui-ci n'étant toujours pas résolu en totalité (par rapport à mon ancien code macro fonctionnel sous Outlook).

J'ai partiellement résolu le pb de fichier pdf qu'il me restait lors de mon dernier post... ;-)

En revanche, je suis toujours bloqué pour pouvoir éxecuter mon action "d'envoi automatique" via messgaerie TB à l'aide de ma macro, le code actuel fourni auparavant sur ce fil par SabV, me rempli bien la totalité des champs du mail à transférer sur une nouvelle fenêtre de rédaction de message...mais en clair, je souhaiterai réellement ne pas voir cette fenêtre s'ouvrir et que le mail puisse partir automatiquement au destinataire sans action supplémentaire autre que sur le fichier de Travail Excel (cela sera moins contraignant à l'utilisation). :oops:

En vous remerciant par avance.
Avatar du membre
Sequoyah
Jeune membre
Jeune membre
Messages : 49
Inscrit le : 25 juin 2017
Version d'Excel : Office 365 32 bit

Message par Sequoyah » 28 juin 2017, 19:14

Bonjour Toons,
Pour l’envoi automatique il devrait suffire d’ajouter ces deux lignes de code à la fin :

Application.Wait (Now + TimeValue("0:00:03"))
SendKeys "^{ENTER}", True
End Sub

Dans Thunderbird il faut sélectionner Outils| Options| page Rédaction | Section Général |
et décocher « Demander confirmation lors de l’utilisation d’un raccourci clavier pour envoyer un message »
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 4'842
Appréciations reçues : 235
Inscrit le : 16 mars 2017
Version d'Excel : 2010 sur PC

Message par i20100 » 28 juin 2017, 23:06

Bonjour à tous,

Toons, pour l'envoie du message, juste avant Set objShell = Nothing
SendKeys "%s", True
et pour supprimer le fichier, mettre cette commande juste avant le end sub
Kill sRep & "\" & sNomFic
Une pensée partagée
Lorsque tu omets de marquer la question initiale comme étant résolu, tu prives les participants du forum d’une solution possible pour eux.
Merci! de faire un clic sur le bouton résolu pour nous aider à t'aider.
isabelle
T
Toons
Membre habitué
Membre habitué
Messages : 59
Inscrit le : 6 juin 2017
Version d'Excel : 2016 FR x64

Message par Toons » 2 avril 2018, 17:49

Bonjour,

Venant de rentrer seulement récemment d'un long voyage à l'étranger où la connexion net n'était pas la priorité; je me permet de vous redéranger concernant la question initiale que j'avais posée...car j'ai bien eu vos 2 réponses:
@ sequoia
@SabV

Mais du coup, quelle est la modification à apporter à mon code VBA initial.
La réponse de Sequoia ou SabV?

Je vous remercie d'avance.

Dès retour info, je m'occupe de modifier tout ça, je fais le ou les tests, et n'hésiterai pas à vous rendre le "verdict"...lol

En vous remerciant pour le suivi, et en m'excusant pour le retard de ma rép.

::D
T
Toons
Membre habitué
Membre habitué
Messages : 59
Inscrit le : 6 juin 2017
Version d'Excel : 2016 FR x64

Message par Toons » 9 avril 2018, 20:06

Bonsoir à tous :-)

Je me permet de refaire un petit up de ma question qui est quasi résolue...enfin presque...lol

Je remercie Sequoyah pour sa réponse apportée le 28/06/2017...ça fait loin, mais effectivement, cette réponse est bien celle qui permet de faire aboutir l'envoi en "automatique" sous TB, que l'application soit ouverte ou fermée sur le PC ^^ ça c'est bien cool.
En revanche, je suis embêté pour 2 petits pb...en espérant que ça pourra réellement se résoudre:

-je suis toujours embêté avec ce fichier pdf qui est généré automatiquement lors de l'exécution de la macro; car celui-ci reste à la racine du dossier où se trouve le fichiel excel utilisé, et j'aurai préféré qu'il s'efface après l'envoi du message.

-je me suis rendu compte que lors de l'exécution de la macro "envoyer" par e-mail que j'ai modifié avec le bout de code de Sequoyah, celui-ci fait bien ce qu'il faut, mais au moment de l'envoi, je ne sais pas pourquoi, le vérouillage du pavé numérique du clavier se désactive tout seul (??) une idée?

Je remercie aussi malgré tout SabV pour ces solutions apportées, mais malheureusement, ni le petit bout de code fourni pour l'envoi du message en auto (la fenêtre du mail reste ouverte avec les indications objet, coprs message, pièce jointe pdf..mais ne part pas; seule la proposition de Sequoyah fonctionne)...et j'ai quand même essayé d'intégrer le petit bout de code pour supprimer le fichier à la suite du code fourni par Sequoyah, que par le bout de code fourni par SabV, et là...je n'ai que la fenêtre d'un nouveau message qui s'affiche , mais toute vierge (plus de données).

En vous remerciant à tous de votre aide pour les suites.. ,-)

Le Code "fonctionnel" à modifier (?)

Sub Mail_TB()
Dim sNomFic As String, sRep As String
Dim tTo As String, tCC As String, tBCC As String, tSujet As String, fichier As String
Dim objShell
Set objShell = CreateObject("WScript.Shell")

sRep = ThisWorkbook.Path 'WshShell.SpecialFolders("Desktop")
sNomFic = "Demande_Intervention.pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sRep & "\" & sNomFic, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False

strHtml = "Bonjour, </font></BR>"
strHtml = strHtml & "<BR>" & _
"Vous avez reçu une nouvelle Demande d'Intervention validée à l'instant. </font></BR>"
strHtml = strHtml & "<BR>" & _
"Merci de bien vouloir la prendre en compte. </font></BR>"
strHtml = strHtml & "<BR>" & _
"<font color=black>Bien cordialement.</font>" & "<BR><BR>"
strHtml = strHtml & "<BR>" & _
"<font color=blue>L'équipe Travaux. </font>" & "<BR>"
strHtml = strHtml & "<BR><BR>"
strHtml = strHtml & Environ("UserName")
strHtml = strHtml & ""

tTo = "xxxxxxxxx@xxxxxxxx.fr"
tCC = "xxxxxxxxx@xxxxxxxx.fr"
tBCC = "xxxxxxxxx@xxxxxxxx.fr"
tSujet = "Nouvelle demande d'intervention reçue"
fichier = sRep & "\" & sNomFic

objShell.Exec ("%ProgramFiles%\Mozilla Thunderbird\thunderbird.exe -compose" & _
" preselectid='id1'" & _
",to='" & tTo & "'" & _
",cc='" & tCC & "'" & _
",bcc='" & tBCC & "'" & _
",newsgroups=''" & _
",subject='" & tSujet & "'" & _
",body='" & strHtml & "'" & _
",attachment='" & fichier & "'" & _
",bodyislink='false'" & _
",type='0'" & _
",format='1'" & _
",originalMsg=''" & _
"")
Application.Wait (Now + TimeValue("0:00:03"))
SendKeys "^{ENTER}", True
Set objShell = Nothing
End Sub
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message