Envoyer des mails à partir du résultat d'une requête.

Anonyme
2020-05-03T14:14:40+00:00

bonjour tout le monde,

je débute sous access.

j'ai créé une table stagiaire, une table formation.

à partir d'un formulaire et d'une requête regroupant les 2 je crée un état "convocation", je suis capable avec un bouton de faire partir par mail cet étatl, mais seulement à la première personne de mon résultat. je traine sur le net mais ne trouve pas de solution pour envoyer à chaque personne sa propre convocation.

si vous avez des pistes de recherche, je suis preneur, avec les codes vba, je tourne en rond et avec les macros intégrés, j'ai l'impression d'être limité.

je suis sous office 365.

merci à vous et belle journée "confinée".

Jérôme.

Microsoft 365 et Office | Access | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

8 réponses

  1. Anonyme
    2020-05-06T19:26:15+00:00

    Essaie

    Private Sub CmdEnvoiConvocation_Click()

        Dim db                    As DAO.Database

        Dim qdf                   As DAO.QueryDef

        Dim prm                   As DAO.Parameter

        Dim rs                    As DAO.Recordset

        Const sReportName = "Convocation"

        On Error GoTo Error_Handler

        Set db = CurrentDb

        Set qdf = db.QueryDefs("convocationvmai")

        For Each prm In qdf.Parameters

            prm = Eval(prm.Name) 'ne change pas ceci, aucun besoin.

        Next prm

        Set rs = qdf.OpenRecordset

        With rs

            If .RecordCount <> 0 Then

                Do While Not .EOF

                    DoCmd.OpenReport sReportName, acViewPreview, , "[ID]=" & ![ID] '*********

                    DoCmd.SendObject acSendReport, sReportName, acFormatPDF, ![email], , , "Convocation", _

                                     "Bonjour," & vbCrLf & vbCrLf & "Suite à votre inscription, veuillez trouver en pièce jointe votre convocation."

                    DoCmd.Close acReport, sReportName

                    .MoveNext

                Loop

            End If

        End With

    Error_Handler_Exit:

        On Error Resume Next

        DoCmd.Close acReport, sReportName

        If Not rs Is Nothing Then

            rs.Close

            Set rs = Nothing

        End If

        If Not prm Is Nothing Then Set prm = Nothing

        If Not qdf Is Nothing Then Set qdf = Nothing

        If Not db Is Nothing Then Set db = Nothing

        Exit Sub

    Error_Handler:

        If Err.Number <> 2501 Then

            MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _

                   "Error Number: " & Err.Number & vbCrLf & _

                   "Error Source: CmdEnvoiConvocation_Click" & vbCrLf & _

                   "Error Description: " & Err.Description & _

                   Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl), _

                   vbOKOnly + vbCritical, "An Error has Occurred!"

        End If

        Resume Error_Handler_Exit

    End Sub

    Et change le filtre "[ID]=" & ![id] pour le nom du champ de ta clef primaire.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2020-05-06T18:57:41+00:00

    Daniel,

    merci pour votre code, cela fonctionne, avec seulement un petit bémol.

    mes mails partent effectivement mais avec toutes les convocations pour tout les mails.

    j'aimerais arriver à envoyer chaque convocation à chaque personne.

    est ce faisable ? quelle piste me donneriez vous ?

    merci encore de votre aide.

    Private Sub CmdEnvoiConvocation_Click()

    Dim db                    As DAO.Database

    Dim qdf                   As DAO.QueryDef

    Dim prm                   As DAO.Parameter

    Dim rs                    As DAO.Recordset

    On Error GoTo Error_Handler

    Set db = CurrentDb

    Set qdf = db.QueryDefs("convocationvmai")

    For Each prm In qdf.Parameters

    prm = Eval("[Forms]![formations]![ID FORMATIONS]")

    Next prm

    Set rs = qdf.OpenRecordset

    With rs

    If .RecordCount <> 0 Then

    Do While Not .EOF

    DoCmd.SendObject acSendReport, "Convocation", acFormatPDF, ![EMAIL], , , "Convocation", _

    "Bonjour," & vbCrLf & vbCrLf & "Suite à votre inscription, veuillez trouver en pièce jointe votre convocation."

    .MoveNext

    Loop

    End If

    End With

    Error_Handler_Exit:

    On Error Resume Next

    If Not rs Is Nothing Then

    rs.Close

    Set rs = Nothing

    End If

    If Not prm Is Nothing Then Set prm = Nothing

    If Not qdf Is Nothing Then Set qdf = Nothing

    If Not db Is Nothing Then Set db = Nothing

    Exit Sub

    Error_Handler:

    If Err.Number <> 2501 Then

    MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _

    "Error Number: " & Err.Number & vbCrLf & _

    "Error Source: CmdEnvoiConvocation_Click" & vbCrLf & _

    "Error Description: " & Err.Description & _

    Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl), _

    vbOKOnly + vbCritical, "An Error has Occurred!"

    End If

    Resume Error_Handler_Exit

    End Sub

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2020-05-06T14:08:44+00:00

    merci de vos réponses, je vais donc essayer tout cela.

    jerome

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire