Excel VBA 2016 Exp mail avec AR & PJ sans passer par Outlook

22excel-pratique.xlsm (186.48 Ko)

Bonjour à tous,

Dans le cadre du développement d'une application je souhaite pouvoir expédier depuis un fichier Excel des mails de confirmation adressés aux personnes qui se seraient inscrites à une manifestation organisée par l’Association auprès de laquelle je fais office d’informaticien… parce qu’il en fallait un… alors que mon niveau en la matière relèverait plutôt de la maternelle.

Dans le cadre de cette démarche, j'ai trouvé sur le forum un code VBA qui fonctionne à merveille mais qui mériterait quelques améliorations. J’y ai donc ajouté quelques fonctionnalités souhaitées et voulu aller encore plus loin en voulant intégrer deux dernières commandes sur lesquelles je bloque depuis des jours. Je sollicite donc le concours des pratiquant du forum pour m’aider à combler ces deux souhaits.

Ce code je l'ai intégré sous forme de texte sur la feuille de calcul en fin de message car les liaisons m'empêchaient de procéder autrement. Pour éviter les pertes de temps, sachez que ce code fonctionne sans faire appel à « Outlook » que je n’ai d’ailleurs pas, ce qui fait de cette spécificité une contrainte majeure car les solutions via Outlook sont légions et m’auraient évité d’être en situation de solliciter votre aide.

Pour compléter mon projet, je souhaiterai y ajouter deux autres fonctionnalités, savoir :

1) obtenir en retour un accusé de réception ou mieux, une confirmation de lecture et enfin,

2) pouvoir joindre à mon envoi un fichier au format PDF .

Je travaille sur Excel 2016 et voici le code qui, je le répète, fonctionne parfaitement sauf, exception faite des lignes 43 et 44 en gras et en rouge qui correspondent aux deux ajouts qui ne fonctionnent pas :

26classeur1.xlsm (11.28 Ko)

En vous remerciant par avance de vos retours,

Bien à vous,

BcN

_____________________________________________________________________________________________________________________________________________________________

Bonjour,

ci-dessous corrections :

    objEmail.AddAttachement (MAIL_PJ)
    objEmail.MDNRequested = True

NB: En dépit de ce que vous affirmez, j'ai de forts doutes sur le fonctionnement de votre application car les FAI (et certainement Orange) ont renforcé la sécurité sur l'envoi des mails. Ils ont tous bloqué l'utilisation du port SMTP : 25 qui permet un envoi sans authentification .

message d erreur

Bonjour Thev,

Merci de votre réponse qui m'apporte une partie des solutions espérées. Je pense que votre expérience vous permet de douter du fonctionnement du code présenté, peut-être avec certains FAI; comme vous les désignez, qui un jour ou peut-être déjà pour quelques-uns n'accepterons pas ou plus cette procédure. Quoi qu'il en soit, je l'ai testée en local avec succès à de nombreuses reprises sur trois adresses de messagerie et sur orange, puisque je n'ai que ça pour mes tests.

Comme je n'ai pas Outlook je ne sais pas comment faire pour obtenir le même résultat... Alors, tant que ça marche.... Je croise les doigts !

Concernant votre réponse, dont je vous remercieà nouveau, je vous informe que la demande d'accusé réception fonctionne parfaitement, par contre, pour joindre un fichier lors de l'envoi du message il y a toujours blocage avec pour indication :

Erreur d'exécution '438' :

Propriété ou méthode non gérée par cet objet

Comme en atteste la photo en pièce jointe

En vous souhaitant une bonne réception et en espérant que vous aurez l'inspiration pour trouver une réponse à mon dernier problème,

Bien à vous,

BcN

Vous n'avez pas mis MAIL_PJ entre parenthèses

objEmail.AddAttachement (MAIL_PJ)

Je suis étonné qu'Orange n'ait pas bloqué l'utilisation du port SMTP 25.

Cela dit, il existe une alternative à CDO. Si vous n'avez pas Office OutLook, vous disposez tout de même du service de messagerie standard Windows : Outlook (à ne pas confondre avec celui de l'application Office). Vous pouvez y ajouter votre compte Orange et envoyer des mails via VBA avec la propriété MailEnveloppe d'une feuille WorkSheet .

Re bonjour Thev,

Si, j'avais bien mis MAIL_PJ entre parenthèses, mais comme cela ne fonctionnait pas, j'ai tenté sans les parenthèses... des fois que !

Quand à votre proposition qui je n'en doute pas me donnerait satisfaction, d'une part je suis loin d'être capable de la mettre au point alors comme je l'ai dit précédemment, je croise les doigts jusqu'à ce que je sois dans l'obligation de passer sous les "fourches caudines" et d'autre part, j'ai tellement passé de temps là dessus et que, probablement grâce à vous je suis à deux doigts de pouvoir terminer ce "chantier" puisqu'il n'y a qu'un seul point qui coince maintenant, que j'hésite à tout jeter à la poubelle.

Restant à votre écoute,

Bien à vous,

BcN

bonjour à tous,

il y a un e en trop

objEmail.AddAttachement (MAIL_PJ)

doit être

objEmail.AddAttachment (MAIL_PJ)

@H2SO4

Bien vu

@Boucoiran

puisqu'il n'y a qu'un seul point qui coince maintenant, que j'hésite à tout jeter à la poubelle.

Vous avez raison car il faut assurer le fonctionnement présent. Mais à votre place, je développerai en parallèle une autre méthode car l'utilisation de la classe CDO devient de plus en plus problématique avec le renforcement de la sécurité sur les envois de mail. Fonctionnement impossible sur les comptes GMail depuis juin 2022 et très difficile sur les comptes Microsoft.

à l'attention de h2so4 & Thev.

Messieurs,

Un tout petit "e" a ébranlé mes certitudes pendant quelques heures. Je suis rassuré que grâce aux contributions de chacun cette procédure fonctionne enfin et me permette de m'alphabétiser en VBA pour tenter le grand saut en mettant à travailler sur la solution proposée par Thev

Merci à tous les deux pour vos contributions respectives.

Bien à vous,

BcN

Rechercher des sujets similaires à "vba 2016 exp mail passer outlook"