IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Génération d'un e-mail automatique


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Legalité Financière & coordinateur de subventions
    Inscrit en
    Novembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Legalité Financière & coordinateur de subventions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 18
    Par défaut Génération d'un e-mail automatique
    Bonsoir,

    Je souhaiterais, dans une DB existante, envoyer des e-mails automitiquement lorsque une date d'écheance est à terme.

    Si je lie l'email sur un formulaire celui ne se declenchera que sur base d"un évement(click .. par ex.), ce qui me convient pas. J'ai essayé de déclencher cet e-mail .. "on load" du formulaire ..mais naturellement il ne me prend que le premier record .. ceci ne peut convenir non plus.

    Mon idée était de developper une function qui serait reprise dans une query par exemple. Query qui ne me reprendrait que les écheances échues et naturellement les adresses e-mail relatives.


    Est-ce possible .. je doute .. si faisable quel serait le code ?

    Ps. je précise que la DB tourne sur AC2007 mais sans conversion - créée initialement sous AC2003.

    D'avance merci pour votre aide.

    MdF

  2. #2
    Membre chevronné
    Inscrit en
    Février 2011
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 469
    Par défaut
    Oui, biensûr, c'est tout à fait possible.
    Tu peux, par exemple, ajouter un bonton sur ton formulaire et associer du code VBA à ce bouton.

    Le code va parcourir un recordset (une liste) et pour chaque record envoyer un Email.

    Cela exige de la programmation VBA.

  3. #3
    Membre averti
    Femme Profil pro
    Legalité Financière & coordinateur de subventions
    Inscrit en
    Novembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Legalité Financière & coordinateur de subventions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 18
    Par défaut
    [QUOTE=PipoWIL;7577036]Oui, biensûr, c'est tout à fait possible.
    Tu peux, par exemple, ajouter un bonton sur ton formulaire et associer du code VBA à ce bouton.

    Le code va parcourir un recordset (une liste) et pour chaque record envoyer un Email.

    Cela exige de la programmation VBA.[/QUOTE

    Si le code est lié à un bouton cela signifie qu"il faudra déclencher (en cliquant le bouton) un évenement.
    Est-il possible, naturellement via un code VBA, de declencher automatiquement l"email ?
    Si oui quel est le code (function je suppose) et à quel objet dois-je le lier ?
    Merci
    MdF

  4. #4
    Membre Expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 887
    Par défaut
    Bonjour Di Francesco,

    Cela peut se faire sur n'importe quel événement.
    Si je lie l'email sur un formulaire celui ne se declenchera que sur base d"un évement(click .. par ex.), ce qui me convient pas. J'ai essayé de déclencher cet e-mail .. "on load" du formulaire ..mais naturellement il ne me prend que le premier record .. ceci ne peut convenir non plus.
    Pas nécessairement cela dépend de la requête pour l'envoie de mail. Tu n'es pas obligé d'associer ta requête à ton formulaire. Si tu parcours les enregistrements et sélectionne tous ceux qui sont passé date cela devrait fonctionner.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT TaTable.N°, TaTable.DateEntree
    FROM TaTable
    WHERE (((TaTable.DateEntree)<=Date()));
    Te retournerais tous les enregistrements qui ont une date plus petite qu'aujourd'hui. À partir de ces enregistrement tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    While rst.EOF = False
    Ton code pour envoyer mail
    rst.MoveNext
    Wend
    Ce qui pose un problème d'après moi c'est plus la gestion de l'envoie de mail. Si à chaque fois que tu ouvres, supposons ton menu principal, la commande peut vérifier tous les records qui sont passé date. À partir de là envoyer email mais tu ne veux pas envoyer systématiquement des emails, si tu l'as déjà fait.

    Bonne journée

  5. #5
    Membre averti
    Femme Profil pro
    Legalité Financière & coordinateur de subventions
    Inscrit en
    Novembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Legalité Financière & coordinateur de subventions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 18
    Par défaut
    Ok Robert, Merci de ta réponse. Je vais y travailler mais je risque de te mettre à contribution de nouveau ..
    MdF

  6. #6
    Membre averti
    Femme Profil pro
    Legalité Financière & coordinateur de subventions
    Inscrit en
    Novembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Legalité Financière & coordinateur de subventions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 18
    Par défaut e-mail automatique
    Hi Robert,

    Après avoir créer ma query en SQL comme indiqué, j'ai mis le code suivant dans un module vba que j'exécute via une macro.. mais ce code me génère un "mass" e-email qui ne me permet pas de personaliser mon envoi. En fait je souhaiterais reprendre une référence (ProjectRef) et un e-mail pa envoi .. et donc pas un "mass" e-mail. J'ai essayé via do.comd sendobject ..mais je m'emmêle les pinceaux !
    Pourrais-tu m'aider?
    ps pour contourner le problème de l'envoi automatique ..journlier, qui pourrait être perçu comme du spam, je pense, après avoir résolu les autre problèmes, mettre une date fixe comme critère...
    Mais d'abord je souhaiterais résoudre la problèmatique de l'envoi du courriel.
    Voici le mon query et mon code VBA

    D'avance merci pour ton aide !
    MdF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    ---------------------------
    SELECT [Project Number] & ";" & [Project acronym] AS ProjectRef, a.Email, b.Message
    FROM tblDeliverables AS a, tblMessage AS b
    WHERE (((a.Email) Is Not Null) AND ((b.MessageID)=1) AND ((a.[Deliverable Status])="Pending"));
     
     
    ------------------------
     
     
    Public Function SendEMail()
    On Error GoTo Err_SendEmail
     
    Dim objOutlook As New Outlook.Application
    Dim objMail As Outlook.MailItem
    Dim sSQL As String, db As DAO.Database, rs As DAO.Recordset
    Dim sTitle As String, sFile As String, sErr As String
    Dim sMessage As String
     
       'Prelims
       DoCmd.SetWarnings False
       DoCmd.Hourglass True
       Set db = CurrentDb
     
       'Prepare email message
       Set objMail = objOutlook.CreateItem(olMailItem)
       With objMail
     
       'Build recordset on recipients
       sSQL = "SELECT Email as [Recipient], Message As [BodyText] FROM qryEmailList;"
       Set rs = db.OpenRecordset(sSQL)
     
       sMessage = rs![BodyText]
     
       While Not rs.EOF
     
          'Add Recipient
          With .Recipients.Add(rs![Recipient])
     
              .Type = olBCC
          End With
     
          rs.MoveNext
     
       Wend
     
       rs.Close
       Set rs = Nothing
     
       'Add the subject
       .subject = "Delay in reporting Deliverables"
     
       'Add standard message text to body
       .Body = sMessage
     
       'Send the mail message
       .Send
     
       End With
       Set objMail = Nothing
       Set objOutlook = Nothing
     
    Exit_SendEmail:
       DoCmd.SetWarnings True
       DoCmd.Hourglass False
       Exit Function
     
     
    Err_SendEmail:
       sErr = "Error " & Error & " / " & Err
       MsgBox sErr, vbInformation + vbOKOnly, "Error on Email function"
       Resume Exit_SendEmail
     
    End Function

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/07/2009, 10h44
  2. Réponses: 14
    Dernier message: 17/11/2005, 17h16
  3. Envoi de mail automatique avec Visual C++
    Par cza dans le forum MFC
    Réponses: 2
    Dernier message: 22/02/2005, 15h59
  4. Envoi d'un mail automatiquement
    Par batmat86 dans le forum C++Builder
    Réponses: 10
    Dernier message: 16/06/2004, 09h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo