Envoie mail a partir de macro Excell via OutlookExpress

misterlick Messages postés 9 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 13 octobre 2011 - 2 janv. 2007 à 23:26
misterlick Messages postés 9 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 13 octobre 2011 - 10 janv. 2007 à 00:24
Bonjour
J'essaye d'envoyer des mails apartir de macro Excell.
Excell version 2002 et Outlook Express 6.
J'ai déjà essayé les 2 manieres svtes mais pas de résultats
1 -
    Windows("Mai.xls").Activate
    ActiveWorkbook.SendMail Recipients:="[mailto:xxxxxxxxx@free.fr xxxxxxxxx@free.fr]", _
                            Subject:="Test envoie"
2 -
'    Dim MonOutlook As Object
'    Dim MonMessage As Object
'
'    Set MonOutlook = CreateObject("Outlook.Application")
'    Set MonMessage = MonOutlook.createitem(0)
'    MonMessage.To = "[mailto:xxxxxx@free.fr xxxxxx@free.fr]"
'    MonMessage.Cc = "[mailto:xxx@llll.fr xxx@llll.fr]"
'    MonMessage.Bcc = ""
'    MonMessage.Subject = "Bordereau du mois précédent"
'    corps = "Bonjour"
'    corps = corps & Chr(13) & Chr(10)
'    corps = corps & "Veuillez trouver le bordereau en piece jointe. "
'    corps = corps & Chr(13) & Chr(10)
'    corps = corps & "Salutations distinguées."
'    corps = corps & Chr(13) & Chr(10)
'    corps = corps & "Agathe Lickindorf"
'    MonMessage.attachements.Add "F:\xxxx\yyyyyy\2007 Février.xls"
'    MonMessage.send
'    Set MonOutlook = Nothing

Merci de m'aiguiller vers une solution

12 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
3 janv. 2007 à 08:49
Salut,
Voici ce que j'ai fait avec ton code et cela fonctionne pour l'envoi :

    Dim MonOutlook As Object
    Dim MonMessage As Object


    Set MonOutlook = CreateObject("Outlook.Application")
    Set MonMessage = MonOutlook.createitem(0)
   
    With MonMessage
    .To = [mailto:xxxxx@free.fr xxxxx@free.fr]
    .Cc = "[mailto:xxx@llll.fr xxx@llll.fr]"
    .Bcc = ""
    .Subject = "Bordereau du mois précédent"
    .attachments.Add "C:\Attribut.txt"
    End With
   
    corps = "Bonjour"
    corps = corps & vbCrLf
    corps = corps & "Veuillez trouver le bordereau en piece jointe. "
    corps = corps & vbCrLf
    corps = corps & "Salutations distinguées."
    corps = corps & vbCrLf
    corps = corps & "Agathe Lickindorf"
    MonMessage.send
    Set MonOutlook = Nothing

Ou va voir ce lien

A+
Exploreur
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
3 janv. 2007 à 08:51
Oups, j'ai oublié une ligne(voir en rouge)

    With MonMessage
    .To = [mailto:xxxxx@free.fr xxxxx@free.fr]
    .Cc = "[mailto:xxx@llll.fr xxx@llll.fr]"
    .Bcc = ""
    .Subject = "Bordereau du mois précédent"
    .attachments.Add "C:\Attribut.txt"
    End With
   
    corps = "Bonjour"
    corps = corps & vbCrLf
    corps = corps & "Veuillez trouver le bordereau en piece jointe. "
    corps = corps & vbCrLf
    corps = corps & "Salutations distinguées."
    corps = corps & vbCrLf
    corps = corps & "Agathe Lickindorf"
    MonMessage.Body = Corps
    MonMessage.send
    Set MonOutlook = Nothing

A+
Exploreur
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
3 janv. 2007 à 08:55
Ben...décidément...Faut que je fasse gaffe aux message 1 seul aurai suffit....lol

    Dim MonOutlook As Object
    Dim MonMessage As Object


    Set MonOutlook = CreateObject("Outlook.Application")
    Set MonMessage = MonOutlook.createitem(0)
   
    With MonMessage
    .To = "[mailto:xxx@llll.fr xxx@llll.fr]"
    .Cc = "[mailto:xxx@llll.fr xxx@llll.fr]"
    .Bcc = ""
    .Subject = "Bordereau du mois précédent"
    .attachments.Add "C:\Attribut.txt"
    'Message
     corps = "Bonjour"
     corps = corps & vbCrLf
     corps = corps & "Veuillez trouver le bordereau en piece jointe. "
     corps = corps & vbCrLf
     corps = corps & "Salutations distinguées."
     corps = corps & vbCrLf
     corps = corps & "Agathe Lickindorf"
    .Body = corps
    .send
    End With
   
   'libération de l'object
    Set MonOutlook = Nothing

Tout est fonctionnel
A+
Exploreur
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
3 janv. 2007 à 11:51
Il faut faire une distinction entre Outlook et Outlook Express.
Ici, un objet ("Outlook.Application") concerne Outlook d'Office.

Une autre façon de procéder est d'utiliser les 2 contrôles MAPI (MAPISession et MAPIMessage)

Crée un Userform qui ne servira qu'à contenir les 2 contrôles.
Dans la liste des contrôles (Composants), choisis les 2 contrôles Microsoft MAPI et incorpore-les sur le UserForm avec leurs noms par défaut.
Ensuite, dans un module, mets les procédures suivantes (Change les noms au besoin)

Sub Appel()
    EnvoiMail "Adresse d'Envoi", "C'est le sujet", "Le corps du message", ActiveWorkbook.FullName  'Chemin et nom du classeur
End Sub

Sub EnvoiMail(A As String, Sujet As String, Corps As String, Fichier As String)
    UserForm1.MAPISession1.SignOn
   
    With UserForm1.MAPIMessages1
        .MsgIndex = -1
        .RecipDisplayName = A
        .MsgSubject = Sujet
        .MsgNoteText = Corps
        .AttachmentIndex = 0
        .AttachmentPathName = Fichier
        .SessionID = UserForm1.MAPISession1.SessionID
        .Send
    End With
   
    UserForm1.MAPISession1.SignOff
End Sub

MPi
0

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

Posez votre question
misterlick Messages postés 9 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 13 octobre 2011
3 janv. 2007 à 21:20
Merci Exploreur et MPI pour les réponses j'essaye ce soir et vous informe ensuite ....
0
misterlick Messages postés 9 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 13 octobre 2011
3 janv. 2007 à 22:21
Salut Exploreur
Effectivement comme nous l a dit MPI, je n'ai pas outlook d'office mais outlook Express et je sors en erreur sur la ligne :
Set MonOutlook = CreateObject("Outlook.Application")
avec le message : Un composant activex ne peut pas créer d'objet
Je garde ton code si jamais je n'arrive pas avec Outlook express J'installerai l'autre Outlook.


En attendant je vais essayer la solution de MPI

Merci
0
misterlick Messages postés 9 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 13 octobre 2011
4 janv. 2007 à 19:23
Bonjour MPI et les autres
Sur mon PC a la maison ( excell V 2002 ) je ne trouve pas les controles Microsoft mapy session et message,  est ce normal ?


Par contre ils y sont au boulot ou j'ai une version antérieure d'excell.
Je ne peux pour le moment essayer ton code
As tu une autre solution ? 
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
7 janv. 2007 à 00:10
Le fichier se nomme MSMAPI32.OCX
et se trouve dans Windows / System (ou System32)
En fait, je ne sais pas d'où il provient... de Windows, de VB6 ???

Si tu ne le trouves pas sur ton ordi, tu pourrais toujours le copier du bureau et le mettre dans ton répertoire System32. Tu peux certainement le trouver sur Internet aussi.
Ensuite, tu dois l'enregistrer en passant par Menu Démarrer / Exécuter et écrire
regsvr32 MSMAPI32.OCX

et redémarrer le PC pour qu'il soit reconnu

MPi
0
misterlick Messages postés 9 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 13 octobre 2011
8 janv. 2007 à 00:57
Merci
J'ai récupéré msmapi32.ocx sur le PC du boulot (sur lequel j'ai VB6 je pense que c'est pour cela que ce controle est actif) 
Je l'ai déjà enregistré + " Menu Démarrer / Exécuter et écrire regsvr32 MSMAPI32.OCX ".
Ca a marché je vais relancé le PC et te tiens informé de la suite.
A+
MLick
0
misterlick Messages postés 9 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 13 octobre 2011
8 janv. 2007 à 01:29
Désolé MPI ca ne roule pas terrible
Quand ensuite j essaye d'installer les controles ds un userform j'ai le message svt
"le controle n'a pas été créé car il n'est pas correctement licencié" 
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
8 janv. 2007 à 02:35
Hummm...
Ouais, désolé, mais ça doit prendre aussi le fichier MSMAPI32.DEP

Voici ce qu'il contient, du moins en partie
Les fichiers dont il est fait référence doivent aussi être sur le PC dans /System32
Peut-être en faudra-t-il d'autres... (?)

; Dependency file for setup wizards.

[Version]
Version= 6.0.81.69

; Dependencies for MSMapi32.ocx

; Default Dependencies ----------------------------------------------

[MSMapi32.ocx]
Dest=$(WinSysPath)
Register=$(DLLSelfRegister)
Version=6.0.81.69
Uses1= ComCat.dll
Uses2 =
CABFileName= MSMapi32.cab
CABDefaultURL=http://activex.microsoft.com/controls/vb6
CABINFFile=MSMapi32.inf

[ComCat.dll]
Dest=$(WinSysPathSysFile)
Register=$(DLLSelfRegister)
Uses1=

; Localized Dependencies --------------------------------------------

; ** French (FR) ***
; (000C = French)
;
[MSMapi32.ocx <000C>]
Uses1= MSMpiFR.dll   <--- pas certain
Uses2 =

[MSMpiFR.dll <000C>]
Uses1=
CABFileName=MSMpiFR.cab
CABDefaultURL=http://activex.microsoft.com/controls/vb6
CABINFFile=MSMpiFR.inf

MPi
0
misterlick Messages postés 9 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 13 octobre 2011
10 janv. 2007 à 00:24
J'avance à petits pas
J'ai installé VB6 sur mon PC et maintenant  je suis arrivé à mettre les controles MAPIMessages1 et MAPISession1 dans une userform1.
Parcontre,  maintenant il ne reconnait pas mapisession1 dans ta ligne de code : 
UserForm1.MAPISession1.SignOn

Ca n'avance pas beaucoup, si tu en as mare j'essayerai autrement
Merci déjà de toutes ces infos
 
Misterlick
0
Rejoignez-nous