Autres ci-joint un classeur pour envoi mail en smtp avec cdo avec ou sans pièce jointe

Roland_M

XLDnaute Barbatruc
Bien le bonjour à tous,

J'ai réalisé ce classeur qui pourrait certainement intéresser plusieurs personnes !?
à tester ! faire des remarques ! chez moi ça fonctionne parfaitement mais j'y travaille encore qq fois.

Classeur avec plusieurs macros pour envoyer des Mails avec ou sans pièce jointe ou dans le corps du msg

Envois possibles:
- Envoi d'un simple mail (le texte que vous aurez entré dans le cadre)
- Envoi avec un Fichier en pièce jointe après l'avoir sélectionné sur le disque.
- Envoi avec une Feuille en pièce jointe ou ses données présentes dans le corps du message.

Vous pouvez créer des feuilles de données que vous pourrez sélectionner
et envoyer en pièce jointe ou placer les données dans le corps du message

EDIT: suite à une remarque justifiée de Staple... je précise que chez moi:
FAI: Orange - OS: Windows 7 - XL: 2007

EDIT2: mise à jour suite à une nouvelle adresse mail sur outlook, j'ai donc pu tester !
ainsi qu'une explication et un lien concernant gmail qui doit être configuré en conséquence
j'ai mis le complet(V5plus) et le plus utilisé(V5simple) mise à jour le 30/05/2019

EDIT3: correction d'une petite erreur dans l'affichage des mails envoyés, sans conséquence sur le fonctionnement. Le 04/12/2019
 

Fichiers joints

Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : ci-joint un classeur pour envoi mail en smtp avec cdo avec ou sans pièce jointe

Bonsoir Roland_M

Merci pour le partage :)

Chez toi cela fonctionne.
Mais dans quelles conditions?
FAI: Orange
OS: XP? Seven?
XL: 2007 ou supérieur?

PS: J'ai déjà testé CDO au taf avec serveur MsExchange.
Cela ne fonctionne pas (ou alors la DSI a fait en sorte que cela ne fonctionne pas ;) )
 

titiborregan5

XLDnaute Accro
Re : ci-joint un classeur pour envoi mail en smtp avec cdo avec ou sans pièce jointe

Bonjour à tous,
je me permets de mettre ma version, qui fonctionne chez moi : FAI : Au taf; OS: XP; XL : 2003...

VB:
Sub envoi_mail()
For i = 2 To Sheets(1).Range("d1").End(xlDown).Row

dest = Cells(i, 5)
service = Cells(i, 2) & "-" & Cells(i, 1)
chemin = "XXX"
nom_fichier = Cells(i, 4)
fich = chemin & nom_fichier
txt = Dir(fich)


Set imsg = CreateObject("CDO.Message")
Set iconf = CreateObject("CDO.Configuration")
nberreur = 0
'MsgBox dest & "/" & service & "/" & chemin & nom_fichier
If txt = "" Then
nberreur = nberreur + 1
GoTo Suite
Else


With imsg


Set .Configuration = iconf
If .Attachments.Count <> 0 Then .Attachments.Delete (1)
.To = dest
.CC = ""
.BCC = ""
.From = "aa@bbb.fr"
.Subject = "sujet" & service
.TextBody = "Bonjour," & Chr(10) & service
.addattachment fich
.Send


End With
End If
Suite:
Next
MsgBox "Votre mail a bien été envoyé"

End Sub
Si ça peut aider...
 

DoubleZero

XLDnaute Barbatruc
Re : ci-joint un classeur pour envoi mail en smtp avec cdo avec ou sans pièce jointe

Bonjour, le Fil :), le Forum,

Merci :D, Roland_M, pour le partage de ce superbe travail.

Merci, itou, titiborregan5 :D.

A bientôt :)
 

Roland_M

XLDnaute Barbatruc
Re : ci-joint un classeur pour envoi mail en smtp avec cdo avec ou sans pièce jointe

re:

merci à toi DoubleZero !
j'espère que tu as bien repris la dernière version que j'ai remis ce soir au #3 !?
 

grisan29

XLDnaute Accro
Re : ci-joint un classeur pour envoi mail en smtp avec cdo avec ou sans pièce jointe

bonjour a vous tous

avant d'essayer le classeur de roland, je vais joindre celui que j'utilise qui peux envoyer un PJ choisi sur le pc, il a été conçu par Patricktoulon de dvp depuis un certain temps et depuis que je suis passer a windows 8 il s'est mis a fonctionner
et j'en reçois une copie, la seule chose est que je n'ai pas essayer d'envoyer a de multiple contacts un message

Pascal
 

Fichiers joints

Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : ci-joint un classeur pour envoi mail en smtp avec cdo avec ou sans pièce jointe

Bonsoir à tous

Est-ce qu'un membre du forum a testé dans ces conditions?
Et réussi à utiliser CDO?
PS: J'ai déjà testé CDO au taf avec serveur MsExchange.
Cela ne fonctionne pas
Car sur nos PCS persos, cela fonctionne en passant par le smtp de notre FAI.

Mais quid de la chose, quand PC en réseau (avec connexion à un DOMAINE) et donc MsExchange .

EDITION: Après avoir lu ceci, j'ai des doutes sur une possibilité d'utiliser CDO à mon taf :p
Exchange Server MAPI Client and CDO 1.2.1 May 2013 :: EHLO :: Rui J.M. Silva Blog :: Blogs :: MSExchange.org
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : ci-joint un classeur pour envoi mail en smtp avec cdo avec ou sans pièce jointe

Re

Merci Roland_M

J'espère qu'il se trouvera un membre du forum qu'il utilise aussi MsExchange et qui pourra tester ton classeur et nous dire si cela fonctionne.

J'essaierai demain ta PJ au boulot.
(Mais j'ai déjà testé jadis les codes CDO de Ron De Bruin et cela ne fonctionnait pas)

PS: J'oublie de préciser qu'au boulot, je suis obligé d'utiliser un Windows "bridé" donc je ne peux pas faire tout ce je peux faire chez moi.
Ceci explique peut-être aussi que je n'arrive pas utiliser CDO au boulot.
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : ci-joint un classeur pour envoi mail en smtp avec cdo avec ou sans pièce jointe

re:

mais quand tu dis que ça ne fonctionne pas,
tu as forcément un message d'erreur !?
si oui, lequel ?
 

Staple1600

XLDnaute Barbatruc
Re : ci-joint un classeur pour envoi mail en smtp avec cdo avec ou sans pièce jointe

Re

Tu comprendras qu' 23h13 je ne suis plus au boulot ;)
Je testes donc demain et je dis cela.

PS: Quel que soit le message d'erreur ou la cause, de tout façon, je n'aurais pas la main.
(Je n'ai pas les droits administrateur sur le PC, et certaines fonctionnalité de Windows sont "bridées"
(Pas d'accès la base de registre, pas d'accès complet au Panneau de config etc...)
 

Yaloo

XLDnaute Barbatruc
Re : ci-joint un classeur pour envoi mail en smtp avec cdo avec ou sans pièce jointe

Bonsoir à tous,

Merci à Roland pour le partage.

Pour Staple, au boulot ça ne fonctionne pas non plus avec MsExchange, mais comme ils ont eu la gentillesse de nous mettre Outlook, je passe avec Outlook. Sinon, je pense que dans les boites où il y a un service informatique un peu pointu (ou parano), ils nous bloquent tout.

A+

Martial
 

Staple1600

XLDnaute Barbatruc
Re : ci-joint un classeur pour envoi mail en smtp avec cdo avec ou sans pièce jointe

Re, bonsoir Yaloo

Yaloo
Par curiosité, je ferai le test quand même demain ;)

Heureusement, au boulot, je peux quand même utiliser VBA
(et ce qui est paradoxal en terme de sécurité VBS aussi. )

Et malheureusement je suis bien seul à utiliser VBA, je n'ose pas vous raconter comment certains collègues utilisent Excel...:confused::eek::confused::eek:
Et pourtant c'est pas faute de leur montrer le confort de travail que cela apporte ;)
Mais ceci est une autre histoire ...

PS: Un bon service informatique se doit d'être compétent en termes de sécurité.
Ça m'agace et m'incapacite parfois mais c'est leur job.
 
Dernière édition:

titiborregan5

XLDnaute Accro
Re : ci-joint un classeur pour envoi mail en smtp avec cdo avec ou sans pièce jointe

Re à tous,

je vais juste préciser qq points sur mon code...
Il sert à envoyer à plusieurs destinataires leur fichier... Il y a donc une boucle qui tourne sur le nom du service, cherche la PJ assimilé (le nom de la pj assimilé et son chemin sont écrits dans la colonne d'à coté) et envoie au(x) destinataire(s) de la ligne. ça fonctionne donc sous forme de tableau...
Un schéma valant mieux qu'un long discours, la PJ est jointe...

Pour ce qui est du CDO, je ne sais pas trop ce que c'est mais il me semble que je m'en sers, et ça marche depuis mon taf... Après, ce n'est peut-être pas aussi bridé que chez vous...

A+

tibo
 

Fichiers joints

Roland_M

XLDnaute Barbatruc
Re : ci-joint un classeur pour envoi mail en smtp avec cdo avec ou sans pièce jointe

Bonjour,

@tititborregan :

et comme ceci, et en essayant de mettre l'init cdo avant la boucle !
sinon il suffit d'enlever les rems devant en bas c'est tout !

Code:
Sub Envoi_Mail()
'init
Dim Destin$, Service$, Chemin$, Nom_Fichier$, PathFichier$, NbrDestin%, NbrErreur%
Dim iMsg As Object, iConf As Object
Set iMsg = CreateObject("CDO.Message") '<<< soit ici
Set iConf = CreateObject("CDO.Configuration") '<<< soit ici
NbrDestin = 0: NbrErreur = 0

'boucle envoi
For I = 2 To Sheets(1).Range("d1").End(xlDown).Row
NbrDestin = NbrDestin + 1
Destin = Cells(I, 5)
Service = Cells(I, 2) & "-" & Cells(I, 1)
Chemin = "xxx\aez\"
Nom_Fichier = Cells(I, 4)
PathFichier = Chemin & Nom_Fichier
'test destinataire
If Trim(Destin) = "" Then
   MsgBox "Destinataire absent !?", vbExclamation, "envoi mail"
   NbrErreur = NbrErreur + 1: GoTo Suivant
End If
'test fichier
If Dir(PathFichier) = "" Then
   MsgBox "Fichier non trouvé !" & vbLf & PathFichier & vbLf & Destin & vbLf & Service, vbExclamation, "envoi mail"
   NbrErreur = NbrErreur + 1: GoTo Suivant
End If
'envoi
'Set iMsg = CreateObject("CDO.Message") '<<< soit ici
'Set iConf = CreateObject("CDO.Configuration") '<<< soit ici
With iMsg
 Set .Configuration = iConf
  If .Attachments.Count <> 0 Then .Attachments.Delete (1)
  .To = Destin
  .CC = ""
  .BCC = ""
  .From = "zzz@zz.fr"
  .Subject = "Comptabilité analytique " & Service
  .TextBody = "Bonjour," & Chr(10) & Service
  .addattachment PathFichier
  .Send
End With

'Set iMsg = Nothing: Set iConf = Nothing 'avec ceci ici
Suivant:
Next

Set iMsg = Nothing: Set iConf = Nothing
MsgBox NbrDestin - NbrErreur & " Mail(s) envoyé(s) !", vbInformation, "envoi mail"
End Sub
 
Dernière édition:

titiborregan5

XLDnaute Accro
Re : ci-joint un classeur pour envoi mail en smtp avec cdo avec ou sans pièce jointe

hello,
Bonjour,

@tititborregan :

et comme ceci, et en essayant de mettre l'init cdo avant la boucle !
sinon il suffit d'enlever les rems devant en bas c'est tout !
euh, pourquoi faire?? :)
Pour une fois que j'ai qqch qui marche j'y touche plus ;)
En fait j'apportais juste des précisions sur le déroulé de ma macro qui pouvait paraître flou!!

A+
 

Roland_M

XLDnaute Barbatruc
Re : ci-joint un classeur pour envoi mail en smtp avec cdo avec ou sans pièce jointe

re

euh ! simplement pour rendre service, faire plaisir, partager ...
pas obliger de le prendre mais avoir une réaction plus sympa serait bien venue !
on m'y reprendra ...

EDIT:
ceci pour te dire que si l'on veut progresser il savoir écouter et regarder !

exemple, ici je te conseil de mettre ceci à la fin, avant ou après ton message:

Set imsg = Nothing: Set iconf = Nothing
MsgBox "Votre mail a bien été envoyé"
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : ci-joint un classeur pour envoi mail en smtp avec cdo avec ou sans pièce jointe

Bonsoir à tous

Roland_M
J'ai testé et j'ai échoué :p
(j' ai regardé le code de ta PJ. Mais en l'état, ta PJ ne permettant pas de tester avec Exchange, j'ai utiliser le code ci-dessous pour néanmoins tester CDO avec Exchange)
L'erreur se fait sur .Send
(le message d'erreur est en fin de code dans les commentaires)
Donc j'ai testé en mettant le nom du serveur Exchange (enfin je crois ) soit de l'ordinateur i qui "héberge" le dit serveur.
et aussi avec l'adresse IP du dit serveur (ou alors c'était l'IP de l'ordi qui héberge le serveur)
Les comptes mail étant créés par le service informatique, je ne connais pas le mot de passe lié à mon email.
j'ai cherché à la pause de midi des infos sur le net (mais pas trouvé de quoi solutionner la chose)
Donc si un membre du forum plus pointu que lou su Exchange et CDO passe dans ce fil, qu'il n'hésite pas à se manifester ;)
Code:
Sub CDO_Tests()
Const confs As String = "http://schemas.microsoft.com/cdo/configuration/"
Dim CDO_Mail_Object As Object, CDO_Config As Object, SMTP_Config As Variant
Set CDO_Mail_Object = CreateObject("CDO.Message")
On Error GoTo debugs
Set CDO_Config = CreateObject("CDO.Configuration")
CDO_Config.Load -1
Set SMTP_Config = CDO_Config.Fields
With SMTP_Config
.Item(confs & "sendusing") = 2
'tests avec NOM Server ou adresse IP
.Item(confs & "smtpserver") = "SMTPNAMEouIP"
.Item(confs & "smtpserverport") = 25
.Update
End With
With CDO_Mail_Object
Set .Configuration = CDO_Config
End With
With CDO_Mail_Object
.Subject = "TEST CDO"
.From = "adressmail"
.To = "adressmail"
.TextBody = "Test Envoi Mail CDO"
.Send
End With
debugs:
If Err.Description <> "" Then Debug.Print Err.Number & Chr(13) & Err.Description
'-2147220973
'Le transport a échoué dans sa connexion au serveur.
End Sub
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas