Recherche
Recherche
Les mémos
 ↑  
Je débute...
Visites

 992145 visiteurs

 2 visiteurs en ligne

Bienvenue sur Access-3stone

Pour les questions, le forum est à votre disposition.

   

Pour consulter l'ancien forum, suivez ce lien

Nouveautés du site
(depuis 30 jours)
Articles
Forum
11/04/2018 : S804 - SendMail CDO
Articles
Forum
11/04/2018 : S804 - SendMail CDO
Les 2 dernières nouvelles
Ping ! - par 3Stone le 19/02/2018 : 17:52

news_4112.jpg

Avant d'envoyer un émail ou autre accès à l'internet directement à partir d'ACCESS, il vaut mieux être certain que l'on est bien connecté au réseau mondial.

A défaut, vous subirez une attente plus ou moins longue... avec éventuellement un résultat négatif. La meilleure façon, sûre et rapide, est de faire un ping vers un serveur qui répond rapidement...

La manière simple est d'ouvrir une console par CMD.exe pour y inscrire la commande. La réponse étant affichée dans cette même console texte.

Un fonction facilitera cela grandement et offre un simple TestIP.


Pas de mise en veille - par 3Stone le 11/01/2016 : 13:25

sleeping.pngPas de mise en veille

Si l'on souhaite exécuter des tâches automatiques, il faut empêcher que le PC n'aille se coucher, heu... se mette en veille.

Une petite fonction qui s'appuie sur un petit utilitaire résout ce problème.

Voir le code et la mise en place.

 

 


Forum en direct

Sujet : SendMail CDO
Bonjour, J'envoi mon lot de factures par mail, hélas, ce qui me gêne c(est le problème de variables dont je suis obligé de coller la valeur dans des champs du formulaire pour les récupérer ensuite en VBA. Option Compare Database Option Explicit Public Destinataire As String Public ObjetDuMessage As String Public PièceJointe As String 'Si le serveur smtp par défaut n'est pas reconnu (clients mail non Microsoft), on pourra employer les fonctions ci-dessous. Private Function GetSMTPServerConfig() As Object Dim Cdo_Config As New CDO.Configuration Dim Cdo_Fields As Object Set Cdo_Fields = Cdo_Config.Fields With Cdo_Fields .Item(cdoSendUsingMethod) = cdoSendUsingPort .Item(cdoSMTPServer) = DFirst("SMTP_Serveur", "T_Constantes") .Item(cdoSMTPServerPort) = DFirst("SMTP_Serveur_Port", "T_Constantes") .Update End With Set GetSMTPServerConfig = Cdo_Config Set Cdo_Config = Nothing Set Cdo_Fields = Nothing End Function 'Syntaxe: 'Call SendMailCDO("Sender", "Destinataire", "Subject", "BodyText", "W:CheminMaFacture.pdf") Private Function SendMailCDO(Sender As String, Destinataire, ObjetDuMessage, BodyText As String, PièceJointe) Dim Cdo_Message As New CDO.Message Set Cdo_Message.Configuration = GetSMTPServerConfig() 'Pour ces deux variables ci après pas de problème ! Sender = DFirst("Email_Expéditeur", "T_Constantes") BodyText = DFirst("Corps_Message", "T_Constantes") With Cdo_Message .From = Sender .To = Me.EmailDestinataire 'pour que ça fonctionne, le suis obligé de coller la valeur Destinataire de la variable dans un champ du formulaire .Subject = Me.Objet ''pour que ça fonctionne, le suis obligé de coller la valeur ObjetDuMessage de la variable dans un champ du formulaire .TextBody = BodyText .addAttachment (Me.CheminEtPièce) ''pour que ça fonctionne, le suis obligé de coller la valeur de la variable PièceJointe dans un champ du formulaire .Send End With Set Cdo_Message = Nothing End Function Private Sub EnvoyerAvec_Click() 'par messagerie 'On utilise le Numéro de facture et non pas CléP_Facture On Error GoTo Fin If NbFactAvec >= 1 Then DoCmd.SetWarnings False 'Purge de la table des factures à envoyer par messagerie DoCmd.RunSQL "Delete T_Factures_Envoi_Messagerie.CléP_Facture_Envoi_Messagerie FROM T_Factures_Envoi_Messagerie" 'Peuplement de la table des factures à envoyer par messagerie "T_Factures_Envoi_Messagerie" DoCmd.OpenQuery "R_Factures_Envoi_Messagerie_PeuplementTable" Dim NbFact_à_Envoyer As Integer Dim FirstFactNuméro As Variant 'Dim Destinataire As String 'Dim PièceJointe As String Dim qdf As DAO.QueryDef Set qdf = CurrentDb.QueryDefs!R_Factures_Etat Do NbFact_à_Envoyer = DCount("FeM_Facture_Imprimé_PDF", "T_Factures_envoi_Messagerie", "FeM_Facture_Imprimé_PDF = 0") FirstFactNuméro = DMin("FeM_Facture_Numéro", "T_Factures_envoi_Messagerie", "FeM_Facture_Imprimé_PDF = 0") qdf.SQL = "SELECT R_Factures.*, R_Facture_Contenu.* FROM R_Factures LEFT JOIN R_Facture_Contenu " & _ "ON R_Factures.CléP_Facture = R_Facture_Contenu.FC_Clé_Facture " & _ "WHERE R_Factures.Fact_Numéro = " & FirstFactNuméro Destinataire = DLookup("FeM_Messagerie_Destinataire", "T_Factures_Envoi_Messagerie", "FeM_Facture_Numéro = " & FirstFactNuméro) ObjetDuMessage = "Notre facture du " & DLookup("FeM_Facture_Date", "T_Factures_Envoi_Messagerie", "FeM_Facture_Numéro = " & FirstFactNuméro) Me.Objet = ObjetDuMessage Me.EmailDestinataire = Destinataire PièceJointe = "W:BasesIrisFacturesEnvoiMessagerie" & DLookup("FeM_PDF_Nom", "T_Factures_Envoi_Messagerie", "FeM_Facture_Numéro =" & FirstFactNuméro) Me.CheminEtPièce = PièceJointe DoCmd.RunSQL "UPDATE T_Factures_Envoi_Messagerie SET T_Factures_Envoi_Messagerie.FeM_Facture_Imprimé_PDF = -1 " & _ "WHERE T_Factures_Envoi_Messagerie.FeM_Facture_Numéro = " & FirstFactNuméro 'Crée le document PDF correspondant à la facture DoCmd.OutputTo acOutputReport, "E_Facture", "PDFFormat(*.pdf)", "W:BasesIrisFacturesEnvoiMessagerie" & DLookup("FeM_PDF_Nom", "T_Factures_Envoi_Messagerie", "FeM_Facture_Numéro =" & FirstFactNuméro), False, "", , acExportQualityScreen 'Envoie l'Email avec la facture jointe Call SendMailCDO("Sender", "Destinataire", "Subject", "BodyText", "PièceJointe") 'Met à joiur la date d'envoi de la facture DoCmd.RunSQL "UPDATE T_Factures SET T_Factures.Fact_Date_EnvoiMessagerie = " & Date * 1 & " WHERE T_Factures.Fact_Numéro = " & FirstFactNuméro Me.NbPDFEnvoyés = NbFactAvec - NbFact_à_Envoyer + 1 Loop Until NbFact_à_Envoyer = 1 Me.Refresh 'Vider le répertoire "W:BasesIrisFacturesEnvoiMessagerie" Kill "W:BasesIrisFacturesEnvoiMessagerie*.pdf" Else If MsgBox("Il n'y a aucune facture sélectionnée !" & (Chr(10) & Chr(10)) & _ "Vous devez sélectionner des factures" & Chr(10) & _ "pour pouvoir les voir, les imprimer" & Chr(10) & _ "ou bien les envoyer par messagerie." & Chr(10) & _ "" & (Chr(10)), vbApplicationModal, CurrentDb.Properties("AppTitle")) = vbOK Then Exit Sub End If Fin: DoCmd.SetWarnings True 'Remet la reqête de la facture d'origine qdf.SQL = "SELECT R_Factures.*, R_Facture_Contenu.* FROM R_Factures LEFT JOIN R_Facture_Contenu ON R_Factures.CléP_Facture = R_Facture_Contenu.FC_Clé_Facture" Set qdf = Nothing End Sub C'est cette partie qui me semble douteuse, je pense que je pourrais me passer de cet artifice : Public Destinataire As String Public ObjetDuMessage As String Public PièceJointe As String ObjetDuMessage = "Notre facture du " & DLookup("FeM_Facture_Date", "T_Factures_Envoi_Messagerie", "FeM_Facture_Numéro = " & FirstFactNuméro) Me.Objet = ObjetDuMessage Me.EmailDestinataire = Destinataire PièceJointe = "W:BasesIrisFacturesEnvoiMessagerie" & DLookup("FeM_PDF_Nom", "T_Factures_Envoi_Messagerie", "FeM_Facture_Numéro =" & FirstFactNuméro) Me.CheminEtPièce = PièceJointe With Cdo_Message .From = Sender .To = Me.EmailDestinataire 'pour que ça fonctionne, le suis obligé de coller la valeur Destinataire de la variable dans un champ du formulaire .Subject = Me.Objet ''pour que ça fonctionne, le suis obligé de coller la valeur ObjetDuMessage de la variable dans un champ du formulaire .TextBody = BodyText .addAttachment (Me.CheminEtPièce) ''pour que ça fonctionne, le suis obligé de coller la valeur de la variable PièceJointe dans un champ du formulaire .Send End With Il doit bien y avoir une raison pour que ça ne marche pas directement avec la valeur des variables  Peut être as tu une réponse merci par avance Pierre ...
17/04/2018 : 20:19
(par possible924)