Envoi de mail via Outlook : Rendre le mail visible

Résolu
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 - 31 juil. 2006 à 15:46
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 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

5 réponses

cs_wape Messages postés 262 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 19 décembre 2010 12
31 juil. 2006 à 22:17
Bonjour,

Essaye de remplacer .Send par .Display

wape
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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


Utilisation:

Dim Tmp as long

Tmp = ShellExecute(0, "Open", "mailto:" & "adresse e-mail" &
"?Subject=Sujet&Body=Texte à écrire", 0&, 0&, 1)


Ça pourrait peut-être servir...(?)

MPi
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
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 :) )
0
nagstef Messages postés 93 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 septembre 2008 1
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
1 août 2006 à 22:34
Salut,


Tu dois créer une référence à Outlook dans ton projet
Menu Outils / Références


Ensuite, il ne devrait plus y avoir d'erreur


(C'est quand même plus lourd à gérer que l'API proposée... :))

MPi
0
Rejoignez-nous