Salut,
Mea Culpa, la propriété .Visible ne s'applique pas à Outlook.
Je ne trouve pas comment activer Outlook.
Salut,
Mea Culpa, la propriété .Visible ne s'applique pas à Outlook.
Je ne trouve pas comment activer Outlook.
Salut Heureux Oli,
Il est possible de partir sur quelques chose comme ça :
Un module de classe clsOutlook :
Et l'appel suivant qui permet de mettre le code en suspens tant que l'on travail sur le mail :
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 Option Compare Database Option Explicit Private WithEvents oMail As Outlook.MailItem Private oApp As Outlook.Application Private bolFin As Boolean Sub init() Set oApp = New Outlook.Application Set oMail = oApp.CreateItem(olMailItem) oMail.Display End Sub Private Sub oMail_Close(Cancel As Boolean) bolFin = True Set oApp = Nothing Set oMail = Nothing End Sub Property Get Actif() As Boolean Actif = Not bolFin End Property
Bien entendu à améliorer pour pré-remplir le mail et gérer les éventuelles erreurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Sub test() Dim oOutlookProcess As New clsOutlook oOutlookProcess.init While oOutlookProcess.Actif DoEvents Wend End Sub
Bonjour Tofalu,
Merci de ta réponse je regarde ca tout de suite!
PS: J'viens de tester ton code, pour essayer de voir ce que je pouvais faire, le WithEvents me donne un message d'erreur: valide seulement dans un module objet.
Ok, en fait, tu a créé des fonctions avec tout les différents sub: init etc...
Et il faut y faire appel dans une sorte de "main program" j'ai compris enfin.
Après test de chacun des blocs, je vois comment ca marche. Juste comment fait-on appel à ces fonctions?
J'ai réussi à gérer le remplissage du mail dans init!
Ca m'arrète sur la page d'envoi du mail (déjà quasiment rempli du coup). Donc limite jpeux m'arréter la ca me suffira non? L'utilisateur aura qu'à appuyer sur envoyer et fermer lui même Outlook.
Du coup, pas besoin de oMail_close, Actif et Test?
Maintenant que le plus dur est faitje me demandais comment limiter cette envoi aux clients qui sont triés par une requète: par exemple, jai 5000 clients, mais 1000 réponde au critères "+de 500 euro d'achat", je créé donc une requète qui les met en évidence ainsi qu'un formulaire pour afficher cette requète, et je veux un bouton qui quand j'appuie dessus lance le module que je viens de faire et met dans le champ CCI (ou BBC) uniquement les clients du formulaire!
Si j'ai bien compris, Set oDB = CurrentDb prend la base de donnée en cours, il faudrait donc réduire cela à la requète en cours! (ou limite trouver comment faire un Set oDB = "nom de la requête" et je mettrais un bouton avec un module spécifique pour chacun de mes formulaires).
Merci encore!
Bonjour, je met résolu et passe sur la partie VBA du forum
J'ajoute le code auquel je suis arrivé:
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 Option Compare Database Option Explicit 'Ajouter les références suivantes : 'Microsoft Outlook 'Microsoft DAO Private oMail As Outlook.MailItem Private oApp As Outlook.Application Private bolFin As Boolean Sub RealisationEnvoi() Set oApp = New Outlook.Application Dim oDB As DAO.Database Dim strContenu As String Dim oRst0 As DAO.Recordset Dim oRst1 As DAO.Recordset Dim strTo As String Dim sqlMail As String 'Instancie Outlook Set oDB = CurrentDb Set oApp = CreateObject("Outlook.Application") 'Crée un nouveau message sqlMail = "SELECT * FROM TableMessage;" Set oRst0 = oDB.OpenRecordset(sqlMail) oRst0.MoveLast Set oMail = oApp.CreateItem(olMailItem) oMail.Body = oRst0.Fields("txtCorps") oMail.Subject = oRst0.Fields("strObjet") & " du " & oRst0.Fields("dtCrea") 'Ouvre un recordset sur les clients Set oRst1 = oDB.OpenRecordset("SELECT * FROM InfosClients") 'Boucle sur chaque client et les ajoute au champ BCC du mail While Not oRst1.EOF strTo = strTo & oRst1.Fields("E-mail") & "; " oRst1.MoveNext Wend 'Supprime la dernière virgule oMail.Bcc = Left(strTo, Len(strTo) - 2) oMail.Display End Sub
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager