Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 2011
-
31 juil. 2006 à 15:46
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
1 août 2006 à 22:34
Bonjour,
Une petite question sur l'envoi d'un mail via Outlook.
Contexte :
Via un formulaire ACCESS, j'alimente un fichier Word qui contient un certain nb de données :
Destinataires
Objet
Corps de message
Ces données sont utilisées comme modèles pour envoyer un mail (à base de copier/coller, etc ...)
Ce que je tente de faire :
Pourquoi s'embêter à faire un copier / coller des différents champs alors qu'au lieu d'alimenter un fichier Word, je pourrais alimenter directement un nouveau message dans Outlook.
J'ai trouvé différentes source, dont celle de DarkCid qui répond en partie à mon besoin :
Dim objOutlook As New Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
With objOutlookMsg
.To = "toto@toto.fr"
.Subject = "Objet du message"
.Body = "Texte du message"
.Send
End With
Set objOutlookMsg = Nothing
Avec ce code, effectivement, je peux envoyer un mail. Le soucis, c'est que c'est transparent, ça ne s'affiche pas à l'écran.
Etant une flèche, ce que je voudrais en fait générer, c'est une fenêtre Nouveau message pré-remplie, à moi de l'envoyer si les champs sont correctements remplis (ne jamais envoyer un mail à une liste de chefs sans avoir au préalable relu 3 fois celui-ci :p).
Pour bloquer l'envoi du mail, il suffit que je bloque le .send
Par contre, comment faire pour que le mail ainsi crée soit visible ?
A priori, la propriété .visible n'existe pas pour l'objet Outlook dans VBA.
Et est-ce que ça suffirait à faire apparaître ma fenêtre Nouveau Message ? Ou l'objet que je déclare n'est pas bon ?
D'avance merci.
Molenn
A voir également:
Envoi de mail via Outlook : Rendre le mail visible
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 1 août 2006 à 00:13
Tu pourrais aussi utiliser l'API ShellExecute qui lancerait
l'application de courriel par défaut, pas nécessairement Outlook.
Efficace s'il n'y a pas de fichier joint.
Déclaration dans un module ou en entête de formulaire:
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA"
(ByVal Hwnd As Long, ByVal lpOperation As String, ByVal lpFile As
String, ByVal lpParameters As String, ByVal lpDirectory As String,
ByVal nShowCmd As Long) As Long
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 1 août 2006 à 10:37
C'est magique !!! C'était bien la propriété Display.
Merci encore.
C'est ma paye qui va être contente, ça va m'éviter d'envoyer des bêtises à toute la hiérarchie de manière automatique, et sans que je le sache en plus ! :p
Molenn
P.S. : Pour l'API, il est possible que ça fonctionne, mais je n'ai pas essayé. Le display répondant à mon attente et étant nettement plus simple à utiliser ^^ (sans compter que je n'ai jamais utiliser une API de ma vie : je préfère ne pas trop me compliquer pour le moment :) )
nagstef
Messages postés93Date d'inscriptionsamedi 11 octobre 2003StatutMembreDernière intervention30 septembre 20081 1 août 2006 à 16:10
Bonjour !!
J'ai fait un Copier coller du code suivant
Dim objOutlook As New Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
With objOutlookMsg
.To = "toto@toto.fr"
.Subject = "Objet du message"
.Body = "Texte du message"
.Send
End With
Set objOutlookMsg = Nothing
et il me fait une erreur "type defini par l'utilisateur non défini" lors du 1° "dim"
Ai-je oublié de définir quelque chose aussi ?
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?