Bonjour le forum,

J'ai écrit une macro sous excel qui permet d'envoyer un ensemble de fichiers excel enregistrés dans un repertoire à un ensemble de destinanataireS dans les e-mails sont inscrits dans un tableaux: chaque fichier est envoyé à un destinataire en utilisant outlook.

Le programme parcourt la liste des destinataires grace à une boucle for.

J'ai remarqué que la boucle for est plus rapide que l'envoi meme des fichiers, du coup, le compteur passe à un autre fichier sans que le précédent ne soit envoyé,; du coup j'ai plein de fichiers qui passent en brouillon.

Pour corriger ça, j'ai rajouté un compteur, ça marche sur mon prdi mais dès que j'essaye sur un autre ordi , j'ai plein de fenetre outlook qui s'ouvre, qui restent ouvertes et le programme plante : en fait ça dépend de la vitesse du processeur !

Donc la meilleure solution serait de pouvoir tester si l'envoi d'un mail via outlook a bien été fait de façon à ne pas passer au prochain envoi que après l'envoi du précédent, mais je sais pas du tout comment écrire un code qui fait ça !

voici mon code (la partie envoi seulement) :
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
 
 
Set OutApp = CreateObject("Outlook.Application")
 OutApp.Session.Logon
 
  Set OutMail = OutApp.CreateItem(0)
  AttachMail = "D:\Documents and Settings\wboudgui\Desktop\test-14 aout\fiches-crees\" & nom & ".xls"
   strbody = "Information sur la mise à jour"
  On Error Resume Next
      With OutMail
 
      'mettre display après with et non pas avant sendkeys car sinon le premier fichier n'est pas envoyé
      '.Display
    ' SendKeys "^{ENTER}"
 
 
 
'.Attachments.Add "C:\Users\foufitta\Desktop\test-14 aout\fiches-crees\" & nom & ".xls"
 
 
 
 
          .To = Workbooks("UPIFich.xls").Worksheets("Feuil1").Cells(n, 6).Value
          '.To = "wafa.boudguiga@yahoo.fr"
          '.CC = "Francois.pignon@free.fr;robin.des.bois@sherwood.gb"
          .Subject = "fiche d'imput"
          .BodyFormat = olFormatHTML
        .HTMLBody = "Bonjour, <BR><BR> voici votre fiche ! "
 
    '' Timer permettant d'attendre que l'envoi soit fait
       If AttachMail <> "" Then
        .Attachments.Add AttachMail
   End If
 
 
 
 
 
.Display
  SendKeys "^{ENTER}"
 
 
End With
 
  Do Until Timer >= 15
 
   DoEvents
 
Loop
 
 
 Next
 
 
    'mettre with avant goto car sinon le premier fichier n'est pas envoyé
       On Error GoTo 0
 
       Set OutMail = Nothing
      Set OutApp = Nothing
 
 
 
'Je ne ferme pas outlook pour le laisser finir l'envoi
'Set myOlApp = CreateObject("Outlook.Application")
   ' myOlApp.Quit
 
SendKeys "{ENTER}"
SendKeys "^{ENTER}"
merci beaucoup, à plus