aide sur un code "envoi via outlook"

sniper2002

XLDnaute Occasionnel
Bonjour

je souhaite avoir votre aide sur ce code, a l'exécution j'ai un message me disant "Erreur de compilation : Type défini par l'utilisateur non défini", sachant que je travail sur excel 2010.

Sub Envoi_email()

Dim AppOutlook As outlook.Application
Dim oMail As outlook.mailitem

Set AppOutlook = CreateObject("Outlook.Application")


Set oMail = AppOutlook.createitem("olmailitem")

With oMail
Subject = "test d'envoi de mail via Excel"
body = "Ceci est le corp d'un message destiné à tester l'execution d'une macro permettant l'envoi d'un mail automatique avec une pièces jointe au mail" _
& Chr(18) & "Cordialement" & Chr(12)
Bodyformat = olformathtml
Recipients.Add ("olivier gan")
Recipients.Add ("Tommy gan")
Attachement.Add ThisWorkbook.Path
Send

End With

AppOutlook.Quit
setappoutlook = Nothing

End Sub

je pense que le problème est au niveau de la déclaration des variables, mais je ne sais pas comment y remédier
merci pour votre aide
 

Softmama

XLDnaute Accro
Re : aide sur un code "envoi via outlook"

Bonjour,

- As-tu la référence Microsoft Outlook Library cochée ? (VBE/Options/Références)
- Il manque tous les . dans ta boucle with : il faut écrire :

Code:
With oMail
[SIZE="6"][B].[/B][/SIZE]Subject = "test d'envoi de mail via Excel"
[SIZE="6"][B].[/B][/SIZE]body = "Ceci est le corp d'un message destiné à tester l'execution d'une macro permettant l'envoi d'un mail automatique avec une pièces jointe au mail" _
& Chr(18) & "Cordialement" & Chr(12)
[SIZE="6"][B].[/B][/SIZE]Bodyformat = olformathtml
[SIZE="6"][B].[/B][/SIZE]Recipients.Add ("olivier gan")
[SIZE="6"][B].[/B][/SIZE]Recipients.Add ("Tommy gan")
[SIZE="6"][B].[/B][/SIZE]Attachement.Add ThisWorkbook.Path
[SIZE="6"][B].[/B][/SIZE]Send

et il manque un espace là:
Code:
set appoutlook = Nothing

et je me demande s'il ne faut pas mettre l'adresse mail du destinataire à la place de
Code:
.Recipients.Add[B] ("Tommy gan")[/B]
 
Dernière édition:

sniper2002

XLDnaute Occasionnel
Re : aide sur un code "envoi via outlook"

la première ligne

ce code je l'ai chopé dans un livre VBA 2010,
j'ai remplacé outlook.application et outlook.mailitem par object, je me rend compte que Send est une fonction que je dois développer apparemment, ... bref le code est nul, je dois trouver une autre solution
tu auras pas un code qui permet d'envoyer automatiquement à des destinataires précis le fichier en pièces jointe depuis excel ?

merci pour ton aide
 

Softmama

XLDnaute Accro
Re : aide sur un code "envoi via outlook"

Re,

Réponds déjà à cette question, car en l'état ton code devrait fonctionner. Mais il nécessite de cocher une référence (dans l'éditeur VBE, fais menu Outils/ Références)
- As-tu la référence Microsoft Outlook Library cochée ? (VBE/Outils/Références)

Mais sinon on peut en effet envoyer un mail via cdo (passe par le serveur smtp plutôt qu'une application)

A te lire
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : aide sur un code "envoi via outlook"

Re, Bonjour Softmama

Code:
Attachement.Add ThisWorkbook.Path

Déjà ici, tu ne peux pas attacher un chemin mais un fichier.

Sinon debug avec un stop dans ton code (puis alt+F8 pour aller pas à pas et Alt+shift+F8 pour continuer).

Code:
Mais sinon on peut en effet envoyer un mail via cdo (passe par le serveur smtp plutôt qu'une application)

Je suis quand même réservé pour utiliser CDO en entreprise, sinon en privé Why not.
 

Softmama

XLDnaute Accro
Re : aide sur un code "envoi via outlook"

Bonjour MJ13, re sniper2002

La remarque de MJ13 me fait me dire, qu'il me semble que tu ne peux joindre à ton envoi le fichier en cours. Tu dois au préalable, le sauvegarder sous un autre nom, envoyer le fichier renommé et le détruire.

Mais sinon pour avoir le nom du fichier en cours, remplace thisworkbook.pah par thisworkbook.fullname
 

sniper2002

XLDnaute Occasionnel
Re : aide sur un code "envoi via outlook"

ça marche maintenait j'ai juste un problème sur cette ligne.
.Attachments.Add ThisWorkbook.Path & "\classeur1.xls"

comment je fais pour intégrer l'emplacement de la pièce jointe parce que il prend l'emplacement bureau par défaut.


Nb: dans le livre il n y a aucune notion sur l'activation de l'option référence outlook !! :)
merci beaucoup.
 

Softmama

XLDnaute Accro
Re : aide sur un code "envoi via outlook"

Bonjour,

Si j'ai bien saisi ton souci désormais, c'est que tu essaies d'attacher en pièce jointe le fichier qui contient la macro d'envoi. Si c'est le cas, il est normal que ça ne fonctionne pas. Il faut faire une copie de ton classeur sous un autre nom et envoyer ce classeur renommé.
Code:
Thisworkbook.saveas thisworkbook.path & "\NouvNom.xls"

puis qd tu veux l'envoyer

Code:
.attachment = thisworkbook.path & "\AncienNom.xls"

puis refaire l'échange et virer le fichier temporaire

Code:
Thisworkbook.saveas thisworkbook.path & "\AncienNom.xls"
Kill thisworkbook.path & "\NouvNom.xls
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 579
Messages
2 089 880
Membres
104 298
dernier inscrit
MarieCB