Access : mise en place d'un système d'envoi de documents individuels
Un tutoriel de Denis Hulo
Le 2020-05-02 16:00:26, par User, Rédacteur/Modérateur
Bonjour à tous,
Je vous présente un nouvel article concernant la génération et l'envoi par e-mails de documents individuels en utilisant Outlook :
J'ai pris comme exemple l'envoi de documents pour des réabonnements dans une maison de la presse.
Chaque fichier pdf est généré dans un dossier, pour ensuite être transmis à son destinataire.
Bonne lecture,
Cordialement,
Je vous présente un nouvel article concernant la génération et l'envoi par e-mails de documents individuels en utilisant Outlook :
Objectif : mettre en place un système permettant de générer et d'envoyer des documents individuels par e-mails depuis Access.
Chaque fichier pdf est généré dans un dossier, pour ensuite être transmis à son destinataire.
Bonne lecture,
Cordialement,
-
UserRédacteur/Modérateurle 03/05/2020 à 9:18
-
tee_grandboisExpert éminent séniorbonsoir User,
bonne initiative ...et le 02/05/2020 à 21:56 -
curtMembre émériteBonjour User,
sujet récurent que de pouvoir envoyer des mails via Access (ou Excel d'ailleurs)
Merci et bravo pour le tuto (la mise en pdf et le stockage est un plus)
Curtle 13/05/2020 à 14:42 -
vodiemExpert confirméSalut à tous,
J'ai survolé l'article, je n'ai même pas testé le code... mais j'ai des critiques: (j'ai lu succinctement le code quand même )
- Le module M_Replace ne sert pas. Il serait préférable de ne pas le mettre.
- nomDossier = CurrentProject.Path :
il serait préférable :
nomDossier = environ("temp"
- il serait préférable d'avoir une variable que de mettre en dur "Réabonnements" (si c'est dans le temp ce n'est plus utile)
- le pdf généré n'est pas détruit alors qu'il ne sera jamais réutilisé. (le temp ferait dans ce cas encore très bien l'affaire surtout lors d'un arrêt intempestif)
- il n'y a pas de gestion d'erreur pour EnvoiDocuments dans TestReabonnements alors qu'il est bien traité dans CmdEnvoyerDocuments_Click
- mais ce que je déplore c'est qu'il n'y pas de gestion sur les erreurs d'envoi. Sans entrer dans quelque chose d'élaboré, je pense qu'à minima il serait bon d'avoir une table ou fichier log.
... je regarde pas plus en détail, je voudrai pas te rendre dépressif User
histoire de pas me faire descendre, un peu de flatterie :
J'ai apprécié la forme, le codage structuré, clair et bien commenté.
Au passage Je n'ai pas testé la base, je me suis arrêté avant l'envoi. J'ai eu un doute :
J'espère que les emails sont factices parce que sinon j'en connais qui vont te maudire.
Merci pour ta (tes) contribution(s).le 14/05/2020 à 21:37 -
UserRédacteur/ModérateurSalut Vodiem,
Je crois en effet qu'il faudrait que je rajoute une gestion d'erreur, j'essaie toujours de garder juste l'essentiel du code pour que ça soit plus clair pour les débutants, mais ça me semble utile dans ce cas.
Concernant le module M_Replace, je vais aussi le supprimer.
Pour l'emploi de CurrentProjet, et l'utilisation du dossier "Réabonnements", je préfère garder un dossier à côté de la base Access, je trouve que c'est plus simple à expliquer et à gérer pour les débutants.
En tout cas merci pour tes remarques
Cdlt,le 14/05/2020 à 22:28 -
UserRédacteur/Modérateurle 13/05/2020 à 15:55
-
CLTTKT34Nouveau Candidat au ClubBonjour
Merci pour cet article très intéressant et surtout pour le code bien détaillé
Je l'ai testé et j'ai un message d'erreur ' La méthode Run de l'objet Inshell3 a echoué'
Une idée du problème?
Mercile 30/10/2020 à 16:24 -
UserRédacteur/ModérateurBonjour et merci,
A première vue, c'est possible qu'il tente d'ouvrir Outlook sans succès.
Le code est au début de la procédure principale d'envoi :Code VBA : 1
2
3
4
5
6
7' Teste si outlook est ouvert, si pas ouvert le lance : If Not IsOutLookRunning() Then Dim oShell As Object Set oShell = CreateObject("WScript.Shell") oShell.Run "outlook" Set oShell = Nothing End If
Il faudrait ôter la gestion d'erreur pour voir la ligne concernée dans EnvoiDocuments.
Cdlt,le 30/10/2020 à 16:56 -
LNDIOCandidat au ClubBonjour,
Je me permets de vous solliciter.
J'ai repris votre descriptif et utilisé dans ma base de données.
Cela fonctionne plutôt bien, mise à part mon filtre qui ne fonctionne pas.
Il me met "Type de donnée incompatibles dans l'expression du critère".
Je ne comprends pas, j'ai également mes 2 tables Clients et Planning
Dans ma table client, un ID Client (Texte) et dans mon Planning (un ID aléatoire, et un champ ID Client (texte également), relié à celui de ma table client. Comme dans votre exemple de table T_abonnement et T_abonné.
Avez vous une idée ?
Pour la partie filtre, voici le code noté.
Code : DoCmd.OpenReport "Planning_quotidien", acViewPreview, , "N_Dossier=" & rsReabo!N_Dossier
le 08/12/2021 à 21:32 -
tee_grandboisExpert éminent séniorbonsoir,
peut-on voir ton code complet ?
Mercile 08/12/2021 à 21:54