Soyez le premier à donner votre avis sur cette source.
Snippet vu 14 318 fois - Téléchargée 31 fois
'Déclaration des functions API Private Declare Function RegisterWindowMessage _ Lib "user32" Alias "RegisterWindowMessageA" _ (ByVal lpString As String) As Long Private Declare Function FindWindow Lib "user32" _ Alias "FindWindowA" (ByVal lpClassName As Any, _ ByVal lpWindowName As Any) As Long Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" (ByVal hwnd As Long, _ ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As Long 'Fonction qui se déclenche lors d un clic sur un bouton de commande. Private Sub CommandButton1_Click() 'Déclaration des variables. Dim wnd As Long Dim uClickYes As Long Dim Res As Long 'Enregistrez un message pour envoyer uClickYes = RegisterWindowMessage("CLICKYES_SUSPEND_RESUME") 'Recherche et activation de la CLICKYES wnd = FindWindow("EXCLICKYES_WND", 0&) 'Mise en service de CLICKYES Res = SendMessage(wnd, uClickYes, 1, 0) 'Déclaration des objets de la messagerie Set mailobj = CreateObject("Outlook.Application") Set Mail = mailobj.CreateItem(olMailItem) 'On prépare l'envoi de Mail With Mail .SentOnBehalfOfName = SentOnName 'Mettre ici le ou les destinataires ("nom.prenom@FAI.com; nom1.prenom1@FAI.com) .To = "nom.prenom@FAI.com" 'Sujet du message .Subject = "Mail automatique" 'Corps de texte du message(contenu) .Body = "test" 'Penser à créer un fichier test.txt dans le DD sous C:\ .Attachments.Add ("C:\test.txt") .display .Send End With ' Mise au repos de CLICKYES Res = SendMessage(wnd, uClickYes, 0, 0) End Sub
7 août 2009 à 17:27
Au fait Le message de sécurité n'intervient que lorsque vous tentez d'envoyer des messages par un autre programme que Outlook.
Si vous exécutez votre code sous Outlook. Vous n'aurez pas besoin de ClickYes. Car Outlook n'affiche pas un problème de sécurité quand c'est lui même qui envoit.
L'astuce est de mentir à Outlook en lui faisant croir que le message est envoyé à travers lui même.
Je reprend la dernière partie de votre code :
Set mailobj = CreateObject("Outlook.Application")
Set Mail = mailobj.CreateItem(olMailItem)
With Mail
'Mettre ici le ou les destinataires
.To = "nom1; nom2; ..."
'Sujet du message
.Subject = "Mail automatique"
'Corps de texte du message(contenu)
.Body = "test"
.Attachments.Add ("C:\test.txt")
.display
'Au lieu d'utiliser la méthode send on utlise la méthode save
.Save
'StrID est une varriable type String
StrID = .EntryID
End With
'On appel la procédure d'outlook
Call mailobj.send_myMail(strID)
Set Mail = Nothing
Set mailobj = Nothing
end sub
Avant d'éxécuter ce code depuis Excel.
Allez sur Outlook dans le module ThisOutlookSession
inserez le code suivant:
Sub send_myMail(StrID As String)
Dim myMail
Set myMail = Application.GetNamespace("MAPI").GetItemFromID(StrID)
myMail.Send
End Sub
Enregistrez le
Retournez à Excel et lancez votre procédure. Ca marchera
21 sept. 2007 à 14:58
J'ai également rajouté un InputBox pour l'adresse.
Code modifié :
' adresse du destinataire
Dim address As String
address = InputBox("Adresse du destinataire : ", "DESTINATAIRE", "")
' fichier joint
Const FTYPE_ALL As String = "Tout type de fichiers, *.*"
Dim join_file As String
join_file = Application.GetOpenFilename(FTYPE_ALL, 0, "Ajouter un fichier", "Joindre")
'
' on lance la fonction de mail
'
With Mail
.SentOnBehalfOfName = SentOnName
'Mettre ici le ou les destinataires ("nom.prenom@FAI.com; nom1.prenom1@FAI.com)
.To = address
'Sujet du message
.subject = "Mail automatique"
'Corps de texte du message(contenu)
.body = "Message envoyé par Excel."
'
' on vérifie simplement si un fichier est ajouté
'
If join_file <> "" Then
.Attachments.Add (join_file)
End If
.display
.Send
End With
22 août 2007 à 01:53
Et comment lui faire alors envoyer un mail à chacune des adresses de mon tableau excel avec la pièce jointe propre à l'adresse (j'ai une colonne avec les adresses mail et une autre avec les pièces jointes à envoyer)
18 nov. 2005 à 14:04
As tu penser à créer le fichier test.txt sur la racine de ton disque dur?.
Je viens de la relancer au bureau et ca fonctionne, le problème c'est que j'ai OUTLOOK 2002, je ne l'ai pas testé avec la version OUTLOOK 2003.
Bonne Prog
18 nov. 2005 à 12:42
j'ai utilisé votre code pour ajouter une pièce jointe à un mailing avec Outlook 2003 et Word. Impossible de lancer la macro qui s'arrête à la ligne : .Attachments.Add ("C:\test.txt") avec un message d'erreur "Erreur de compilation, membre de méthode ou de donnée introuvable".
Microsoft Outlook Object 11.0 library est bien installé dans les références.
Où est le probléme ?
Cordialement
GB
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.