Envoi de mail via Outlook : Rendre le mail visible

[Résolu]
Signaler
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
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

Messages postés
262
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
19 décembre 2010
9
Bonjour,

Essaye de remplacer .Send par .Display

wape
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
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
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
7
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 :) )
Messages postés
93
Date d'inscription
samedi 11 octobre 2003
Statut
Membre
Dernière intervention
30 septembre 2008

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