Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/10/2011, 22h38   #1
Membre du Club
 
Vincent GUILLON
Inscription : octobre 2009
Messages : 58
Détails du profil
Informations personnelles :
Nom : Vincent GUILLON

Informations forums :
Inscription : octobre 2009
Messages : 58
Points : 46
Points : 46
Par défaut Executer commande sendmailCDO

Bonjour à tous,
Je galère pour l'envoi auto d'un mail dans une appli access.
J'ai créé un module de classe dans lequel j'ai copié le code suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Function SendMailCDO(expediteur As String, destinataire As String, _
 objetmessage As String, corpsmessage As String, Optional piecejointe As String)
 
Dim Cdo_Message As New CDO.Message
Set Cdo_Message.Configuration = GetSMTPServerConfig()
 
With Cdo_Message
    .To = destinataire
    .From = expediteur
    .Subject = objetmessage
    .TextBody = corpsmessage
    .AddAttachment (piecejointe)
    .Send
End With
 
Set Cdo_Message = Nothing
 
End Function
Function GetSMTPServerConfig() As Object
Dim Cdo_Config As New CDO.Configuration
Dim Cdo_Fields As Object
Set Cdo_Fields = Cdo_Config.Fields
 
With Cdo_Fields
.Item(cdoSendUsingMethod) = cdoSendUsingPort
.Item(cdoSMTPServer) = "smtp.xxxxxxxx.fr"
.Item(cdoSMTPServerPort) = 25
.Update
End With
 
Set GetSMTPServerConfig = Cdo_Config
Set Cdo_Config = Nothing
Set Cdo_Fields = Nothing
 
End Function
Je ne comprend pas comment lancer la commande "call sendmailCDO(....."
Lorsque je l'affecte à un bouton sur la commande click() dans un formulaire, j'ai un message "erreur de compilation : sub ou fonction non défine"
Voilà des heures et des heures que je galère...
Vous l'avez bien compris je pense, je ne maitrise pas vraiment le VBA !!
Merci à tous pour votre aide !
nolliug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 05h44   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 943
Points : 30 943
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Tu as crée une fonction (function), il faut une routine (sub).

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 10h19   #3
Membre du Club
 
Vincent GUILLON
Inscription : octobre 2009
Messages : 58
Détails du profil
Informations personnelles :
Nom : Vincent GUILLON

Informations forums :
Inscription : octobre 2009
Messages : 58
Points : 46
Points : 46
Merci Philippe pour ton aide.
J'ai appliqué ta solution mais maintenant j'ai un message d'erreur sur la ligne de code .send de la fonction sendmailCDO()
Voici l'intégralité de mon code pour info :

le lancement :
Code :
1
2
3
Private Sub Commande61_Click()
Call SendMailCDO("xxxxx@xxx.fr", "yyyyyy@yyyy.fr", "STOCK BAG", "RAS", , "c:\applications\STOCK_bagbig.txt")
End Sub
la fonction sendmailCDO() :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Function SendMailCDO(Sender As String, Receiver As String, _
Subject As String, BodyText As String, _
Optional Cc As String, Optional Bcc As String)
 
Dim Cdo_Message As New CDO.Message
 
Set Cdo_Message.Configuration = GetSMTPServerConfig()
 
 
With Cdo_Message
 
.To = Receiver
 
.From = Sender
 
.Subject = Subject
 
.Cc = Cc
 
.Bcc = Bcc
 
.TextBody = BodyText
 
.Send
 
End With
 
 
Set Cdo_Message = Nothing
 
End Function
et enfin la fonction etSMTPServerConfig() :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Function GetSMTPServerConfig() As Object
 
Dim Cdo_Config As New CDO.Configuration
 
Dim Cdo_Fields As Object
 
Set Cdo_Fields = Cdo_Config.Fields
 
 
With Cdo_Fields
 
.Item(cdoSendUsingMethod) = cdoSendUsingPort
 
.Item(cdoSMTPServer) = "smtp.orange.fr"
 
.Item(cdoSMTPServerPort) = 25
 
.Update
 
End With
 
 
Set GetSMTPServerConfig = Cdo_Config
 
Set Cdo_Config = Nothing
 
Set Cdo_Fields = Nothing
 
End Function
Peux-tu m'expliquer pourquoi j'ai cette erreur (copie ecran en piece jointe)
Images attachées
Type de fichier : png erreur.png (118,9 Ko, 10 affichages)
nolliug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 11h43   #4
Membre du Club
 
Vincent GUILLON
Inscription : octobre 2009
Messages : 58
Détails du profil
Informations personnelles :
Nom : Vincent GUILLON

Informations forums :
Inscription : octobre 2009
Messages : 58
Points : 46
Points : 46
Philippe,
Infos complémentaires,
J'ai trouvé un info qui m'évite cette erreur :
il suffit de remplacer :
Code :
1
2
3
With Cdo_Fields
 
.Item(cdoSendUsingMethod) = cdoSendUsingPort
par :
Code :
1
2
3
With Cdo_Fields
 
.Item(cdoSendUsingMethod) = cdoSendUsingPickup
Mais maintenant j'ai une erreur 8040222 : le chemin d'acces du repertoire est requis !!!

Merci pour ton aide.

Peut-être as-tu une autre méthode d'envoie de mail à me proposer ?

@+
Vince
nolliug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 14h08   #5
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 075
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 075
Points : 4 385
Points : 4 385
Envoyer un message via Skype™ à GAYOT
Bonjour
Si ton serveur smtp est chez Orange ou un autre Fai, il ne faut pas prendre l'option "cdoSendUsingPickup".
Si tu choisis cette option c'est que tu as ton serveur en local et il t'en demande le chemin.

D'autre part ta fonction SendMailCdo a comme dernier argument en option"Bcc" et dans l'appel tu mets le chemin d'un pièce jointe.

Il faut voir aussi si ton compte nécessite une authentification.
Regardes la configuration de ta messagerie.
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 16h49   #6
Membre du Club
 
Vincent GUILLON
Inscription : octobre 2009
Messages : 58
Détails du profil
Informations personnelles :
Nom : Vincent GUILLON

Informations forums :
Inscription : octobre 2009
Messages : 58
Points : 46
Points : 46
Merci Jean-Damien pour tes commentaires très pertinents !!
Bon je "revise ma copie"... et reviens vers vous après modifs.
Merci pour votre aide précieuse !
Vince
nolliug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 08h42   #7
Membre du Club
 
Vincent GUILLON
Inscription : octobre 2009
Messages : 58
Détails du profil
Informations personnelles :
Nom : Vincent GUILLON

Informations forums :
Inscription : octobre 2009
Messages : 58
Points : 46
Points : 46
Un grand merci à Jean-Damien et Philippe qui m'ont ouvert l'esprit !
Ces forums sont vraiment extras ! Ils permettent à des novices comme moi de faire des prouesses !! Bravo à tous.
Concernant mes problèmes, j'ai trouvé sur ce forum un script qui fonctionne à merveille !
Je le joint à mon post ... peut-être pourra-t-il servir à d'autres !
Cordialement
Vince
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
If (Forms!MENU!VILLE = "xxxxxxxxx") Then
        DoCmd.RunSavedImportExport "Exportation-ComptaClot_export1"
 
Dim iMsg As Object, iConf As Object, Flds As Object
 
Set iMsg = CreateObject("cdo.message")
Set iConf = CreateObject("cdo.configuration")
 
Set Flds = iConf.Fields
With Flds
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.orange.fr"
    .Update
End With
 
With iMsg
    Set .Configuration = iConf
    .To = "xxxx@yyy.fr"
    .Cc = "zzzz@yyy.fr"
    .From = "wwww@yyy.fr"
    .Subject = "ECRITURES COMPTABLES"
    .HTMLBody = "Fichier d'import d'ecritures comptables a intégrer (PDB de XXXXX)"
    .AddAttachment "c:\Applications\ComptaClot_export_BAG.txt"
    .Send
End With
Exit Function
nolliug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 09h48   #8
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 075
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 075
Points : 4 385
Points : 4 385
Envoyer un message via Skype™ à GAYOT
Bonjour
Bravo d'avoir trouvé.
Néanmoins attention de ne pas recopier sans comprendre.
Par exemple dans ton cas tu mets:
Code :
HTMLBody = "Fichier d'import d'ecritures comptables a intégrer (PDB de XXXXX)"
"TextBody" aurait été plus approprié.
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2011, 15h02   #9
Membre du Club
 
Vincent GUILLON
Inscription : octobre 2009
Messages : 58
Détails du profil
Informations personnelles :
Nom : Vincent GUILLON

Informations forums :
Inscription : octobre 2009
Messages : 58
Points : 46
Points : 46
Merci beaucoup Jean Damien.
Je fais la modif des demain.
@+
Vince
nolliug est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h33.


 
 
 
 
Partenaires

Hébergement Web