Infi888 Intermittent des forums | 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 ? Merci d'avance. Nb : C'est pour un usage interne (pas du spam ou ce genre de saloperie), d'où l'envois de données Excel.
Code :
- Private Sub Segmentation_Pays()
- Dim IntCompteur As Integer
- Dim IntMaxRecord As Integer
- Dim StrPays As String
- Dim Mysql As String
- Dim MySql2 As String
- ' Création d'une table temporaire contenant les données de la table Ref_Pays
- Dim cnn1 As ADODB.Connection
- Set cnn1 = CurrentProject.Connection
- Dim MyRecordSet As New ADODB.Recordset
- Dim MyRecordSet2 As New ADODB.Recordset
- MyRecordSet.ActiveConnection = cnn1
- MyRecordSet2.ActiveConnection = cnn1
- ' Blocage des messages d'alerte
- DoCmd.SetWarnings False
- Mysql = "SELECT ID_Pays, Description_Pays"
- Mysql = Mysql + " FROM Ref_Pays"
- Mysql = Mysql + " WHERE Actif = 1"
- MyRecordSet.Open Mysql
- 'Compte le nombre de ligne d'une table
- IntMaxRecord = DCount("*", "Ref_Pays" )
- For IntCompteur = 1 To IntMaxRecord Step 1
- StrPays = MyRecordSet.Fields(0).Value
- MyRecordSet.MoveNext
- 'Creation d'une table par pays
- DoCmd.RunSQL "CREATE TABLE Temp_" + StrPays + " ([ProductId] text (20), [VendorList] text (255))"
- 'Envoi d'un e-mail plus pièce jointe
- Dim Corps As String
- Corps = "Bonjour,"
- 'Chr(13) & Chr(10) = Touche ENTER
- Corps = Corps & Chr(13) & Chr(10)
- Corps = Corps & "Ceci est un Test d'envoi de message."
- DoCmd.SendObject acSendTbl, "Temp_" + StrPays, acFormatXLS, "Toto.dupond@blabla.com", , , " l'objet de mon message ", Corps & Now(), False
- 'Suppression de la table temporaire de stockage des informations
- Dim obj As AccessObject
- DoCmd.DeleteObject acTable, "Temp_" + StrPays
- Next
- 'Réactivation des messages d'urgence
- DoCmd.SetWarnings True
- 'Cloture des liens ADO cnn1
- Set MyRecordSet = Nothing
- Set MyRecordSet2 = Nothing
- Set cnn1 = Nothing
- End Sub
|
|