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 :
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
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
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
Partager