envoi de messages automatiques + pièce jointe vers Outlook par Access

envoi de messages automatiques + pièce jointe vers Outlook par Access - VB/VBA/VBS - Programmation

Marsh Posté le 05-04-2006 à 17:48:37    

Bon premièrement, désolé si la question a déjà été posée, mais je suis incapable d'y accéder. En effet, notre administration réseau a eu la bonne idée de bloquer tout accès aux liens comportant le mot mail ou e-mail et il m'est donc impossible d'accéder à ces messages (ca c'est pour vous donner une idée de ce qu'est la définition d'une belle bande de crétins...)
 
En ce qui me concerne, je débute la programmation Access depuis très peu de temps (2 jours) et je rencontre un problème épineu lors de l'envoi automatique d'un e-mail via access. En effet, lorsque je lance la procédure suivante, l'envoi ne se fait qu'une seule fois. Lorsque je la relance, pouf, plus d'envoi d'e-mail. Le seul moyen pour que cela refonctionne est de redémarrer la machine (un peu chiant en cas d'erreur...).
 
L'idée du module est de se servir d'une table de référence pour générer lors d'une boucle, X fichiers, qui découperont un fichier principal en autant de parties, pour ensuite les envoyer par e-mail. Dans chaque boucle je vais donc récuperer l'une après l'autre les données de ma table de référence, puis j'utilise cette variable pour créer une table (par encore remplie, ni même vraiment mise en forme, c'etait juste un test) que je remplirais plus tard avec une requete sélection en SQL en fonction du paramètre. Cette table est ensuite envoyée au format Excel, puis supprimée (dans l'interval j'espérais aussi pouvoir gérer une liste de diffusion pour que chaque donnée de ma table de référence face le lien avec les personnes concernées).
 
La question étant : mais pourquoi je n'arrive pas à la lancer plusieurs fois ? :o  
 
Merci d'avance.  :jap:  
 
Nb : C'est pour un usage interne (pas du spam ou ce genre de saloperie), d'où l'envois de données Excel.
 

Code :
  1. Private Sub Segmentation_Pays()
  2. Dim IntCompteur As Integer
  3. Dim IntMaxRecord As Integer
  4. Dim StrPays As String
  5. Dim Mysql As String
  6. Dim MySql2 As String
  7. ' Création d'une table temporaire contenant les données de la table Ref_Pays
  8. Dim cnn1 As ADODB.Connection
  9. Set cnn1 = CurrentProject.Connection
  10. Dim MyRecordSet As New ADODB.Recordset
  11. Dim MyRecordSet2 As New ADODB.Recordset
  12. MyRecordSet.ActiveConnection = cnn1
  13. MyRecordSet2.ActiveConnection = cnn1
  14. ' Blocage des messages d'alerte
  15. DoCmd.SetWarnings False
  16. Mysql = "SELECT ID_Pays, Description_Pays"
  17. Mysql = Mysql + " FROM Ref_Pays"
  18. Mysql = Mysql + " WHERE Actif = 1"
  19. MyRecordSet.Open Mysql
  20. 'Compte le nombre de ligne d'une table
  21. IntMaxRecord = DCount("*", "Ref_Pays" )
  22. For IntCompteur = 1 To IntMaxRecord Step 1
  23. StrPays = MyRecordSet.Fields(0).Value
  24. MyRecordSet.MoveNext
  25. 'Creation d'une table par pays
  26. DoCmd.RunSQL "CREATE TABLE Temp_" + StrPays + " ([ProductId] text (20), [VendorList] text (255))"
  27. 'Envoi d'un e-mail plus pièce jointe
  28. Dim Corps As String
  29.     Corps = "Bonjour,"
  30.     'Chr(13) & Chr(10) = Touche ENTER
  31.     Corps = Corps & Chr(13) & Chr(10)
  32.     Corps = Corps & "Ceci est un Test d'envoi de message."
  33. DoCmd.SendObject acSendTbl, "Temp_" + StrPays, acFormatXLS, "Toto.dupond@blabla.com", , , " l'objet de mon message ", Corps & Now(), False
  34. 'Suppression de la table temporaire de stockage des informations
  35. Dim obj As AccessObject
  36. DoCmd.DeleteObject acTable, "Temp_" + StrPays
  37. Next
  38. 'Réactivation des messages d'urgence
  39. DoCmd.SetWarnings True
  40. 'Cloture des liens ADO cnn1
  41. Set MyRecordSet = Nothing
  42. Set MyRecordSet2 = Nothing
  43. Set cnn1 = Nothing
  44. End Sub

Reply

Marsh Posté le 05-04-2006 à 17:48:37   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed