Bonjour,

Je n'arrive pas à résoudre un problème que j'ai lors de l'envoi de mail. Je m'y prends probablement très mal. Je débute...

Avec le code ci-dessous, j'arrive à créer mon mail. Une instance réduite d'Outlook démarre, le mail atterrit dans la boite d'envoi et l'instance se ferme... mais le mail ne part pas, il faut que je démarre Outlook en manuel.

Ma fonction se termine trop rapidement pour que l'envoi se fasse. En mettant une Msgbox, et en attendant un peu ça marche.

Le code CreateEmail est dans un module. L'autre partie est sur le clic d'un bouton dans un état.

Je cherche une solution pour avoir un retour d'Outlook "envoyé" pour résoudre tout ça, mais j'ai peur de faire fausse route.

Vos éclaircissements seraient les bienvenus.

Dans un module :

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
 
Public Sub CreateEmail( _
    Recipient As String, _
    Subject As String, _
    Body As String, _
    Optional Attach As Variant)
 ' --------------------------
    Dim i As Integer
    Dim oEmail As Outlook.MailItem
    Dim appOutLook As Outlook.Application
 
    ' Créer un nouvel item mail
 
    Set appOutLook = New Outlook.Application
    Set oEmail = appOutLook.CreateItem(olMailItem)
 
    ' Les paramètres
 
    oEmail.To = Recipient
    oEmail.Subject = Subject
    oEmail.Body = Body
 
    If Not IsMissing(Attach) Then
 
       If TypeName(Attach) = "String" Then
 
             ' S'il y a des pièces jointes
            oEmail.Attachments.Add Attach
 
        Else
 
            For i = 0 To UBound(Attach) - 1
            oEmail.Attachments.Add Attach(i)
 
            Next
 
        End If
 
    End If
 
    ' Envoie le message
    oEmail.Send
 
    ' Détruit les références aux objets
    Set oEmail = Nothing
 
    Set appOutLook = Nothing
 
End Sub
Dans l'état :

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
Private Sub BTN_COMPTA_Click()
 
Dim PiecesJointes() As String
ReDim PiecesJointes(Me!Nblignes + 2)
Dim Pj As String
 
Dim oRqt As DAO.QueryDef
Dim oRslt As DAO.Recordset
 
Dim i As Integer
i = 0
 
Set oRqt = CurrentDb.QueryDefs("RQT_ETAT")
Set oRslt = oRqt.OpenRecordset
 
While Not oRslt.EOF
  Pj = oRslt.Fields(10).Value
  PiecesJointes(i) = "c:\Users\" & Environ("USERNAME") & Right(Pj, Len(Pj) - 15)
  oRslt.MoveNext
  i = i + 1
Wend
 
oRslt.Close
Set oRslt = Nothing
 
DoCmd.OutputTo acOutputReport, "ETAT", "PDF", "Recap_imprimable.pdf"
PiecesJointes(i) = "c:\Users\" & Environ("USERNAME") & "\Documents\Recap_imprimable.pdf"
 
DoCmd.OutputTo acOutputReport, "ETAT", acFormatXLS, "Recap_excel.xls"
PiecesJointes(i + 1) = "c:\Users\" & Environ("USERNAME") & "\Documents\Recap_excel.xls"
 
Call CreateEmail("------@gmail.com", "test", "test", PiecesJointes)
 
End Sub