Bonjour le forum,
Sur le bouton "Envoyer" d'un formulaire, j'ai écrit le code suivant:
Le but est d'envoyer automatiquement le fichier actif a deux adresses fixes. Je ne suis pas sûr que mes utilisateurs disposent tous d'Outlook. Pour contourner le problème, et comme je n'ai besoin que de la première feuille, j'essaie déjà avec la méthode CDO. Si elle ne fonctionne pas (si l'adresse du serveur SMTP est nécessaire par exemple), j'essaie avec la méthode SendMail.
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 Private Sub cmdEnvoyer_Click() '------ Envoi du mail avec la méthode CDO On Error GoTo DeuxiemeEssai Dim Sourcewb As Workbook, Destwb As Workbook Dim Temp As String, CdoMessage As Object, Fichier As String Set Sourcewb = ActiveWorkbook ActiveSheet.Copy Set Destwb = ActiveWorkbook Temp = ThisWorkbook.Path & Application.PathSeparator & "Recap " & Format(Date, "ddmmyyyy") & ".xls" With Application .ScreenUpdating = False .DisplayAlerts = False End With Destwb.SaveAs Temp Fichier = Destwb.Path & Application.PathSeparator & Destwb.Name Destwb.Close Application.DisplayAlerts = True Set CdoMessage = CreateObject("CDO.Message") With CdoMessage .Subject = "Récap " & Format(Date, "ddmmyyyy") .To = "toto@yyyy.com; tata@yyyy.com" .TextBody = "Veuillez trouver ci-joint notre récapitulatif en date du " & Format(Date, "ddmmyyyy") .AddAttachment Fichier .Send End With With Application .ScreenUpdating = True .DisplayAlerts = True End With Set CdoMessage = Nothing Kill Fichier DeuxiemeEssai: EnvoyerParSendMail Exit Sub End Sub Private Sub EnvoyerParSendMail() '------ Envoi avec la méthode sendmail si la méthode CDO ne fonctionne pas. On Error GoTo GestionErreur strSujetMail = "Récap " & Format(Date, "ddmmyyyy") strDestinataires(0) = "toto@yyyy.com": strDestinataires(1) = "tata@yyyy.com" ActiveWorkbook.SendMail strDestinataires, strSujetMail, False GestionErreur: MsgBox strErreurEnvoiMail End Sub
Si il y a une erreur, je veux afficher une msgbox qui demande à l'utilisateur d'envoyer lui-même le fichier.
Sur mon poste, la méthode CDO ne fonctionne pas et je n'ai pas l'adresse de mon serveur SMTP. La routine essaie donc avec la méthode SendMail. Le mail part bien, mais à chaque fois, la MsgBox apparaît. J'imagine que c'est un problème de gestion des erreurs?
Code : Sélectionner tout - Visualiser dans une fenêtre à part MsgBox strErreurEnvoiMail
Partager