[Excel 2003] .Send, envoi mail VBA : erreur
Fermé
zoubinho
Messages postés
15
Date d'inscription
mardi 6 janvier 2009
Statut
Membre
Dernière intervention
27 février 2009
-
2 févr. 2009 à 14:35
Utilisateur anonyme - 3 févr. 2009 à 18:53
Utilisateur anonyme - 3 févr. 2009 à 18:53
A voir également:
- [Excel 2003] .Send, envoi mail VBA : erreur
- Yahoo mail - Accueil - Mail
- Liste déroulante excel - Guide
- Si et excel - Guide
- Programmer envoi mail gmail - Guide
- Aller à la ligne excel - Guide
2 réponses
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
3 févr. 2009 à 14:10
3 févr. 2009 à 14:10
Bonjour,
Par curiosité j'ai regardé le pb. J'ai trouvé une solution mais je ne sais pas si tu connaissais déjà, ni si elle est généralisable et surtout si elle est applicable dans ton cas. J'ai réussi à le faire fonctionner chez moi (avec Outlook 2003).
J'ai trouvé un freeware qui s'appelle Mapilab et qui permet de gérer la stratégie de sécurité de Outlook.
Il est téléchargeable ici : https://www.mapilab.com/download/ (chapitre Advanced Security for Outlook)
Après l'installation de mapilab, il suffit de relancer Outlook. Alors au premier lancement de ta macro Excel, Mapilab te demande quelle stratégie de sécurité tu souhaite adopter. Si tu réponds "allow access" et que tu coches la case "always" alors il ne pose plus la question pour les envois de mail.
Bien sur il faut avoir les droits suffisants pour installer cet utilitaire et gérer la stratégie de sécurité sur ta machine mais bon ....
Voilà je ne suis pas allé plus loin
A+
Par curiosité j'ai regardé le pb. J'ai trouvé une solution mais je ne sais pas si tu connaissais déjà, ni si elle est généralisable et surtout si elle est applicable dans ton cas. J'ai réussi à le faire fonctionner chez moi (avec Outlook 2003).
J'ai trouvé un freeware qui s'appelle Mapilab et qui permet de gérer la stratégie de sécurité de Outlook.
Il est téléchargeable ici : https://www.mapilab.com/download/ (chapitre Advanced Security for Outlook)
Après l'installation de mapilab, il suffit de relancer Outlook. Alors au premier lancement de ta macro Excel, Mapilab te demande quelle stratégie de sécurité tu souhaite adopter. Si tu réponds "allow access" et que tu coches la case "always" alors il ne pose plus la question pour les envois de mail.
Bien sur il faut avoir les droits suffisants pour installer cet utilitaire et gérer la stratégie de sécurité sur ta machine mais bon ....
Voilà je ne suis pas allé plus loin
A+
Utilisateur anonyme
3 févr. 2009 à 18:53
3 févr. 2009 à 18:53
Bonjour,
J'ai aussi rencontrez ce problème que j'ai contourner en instanciant un objet [ OutlookExpress ] ,
qui est présent par défaut sous WXP et ce même s'il n'est pas configurer.
À la demande de certains CCMISTES, j'ai inclu beaucoup de commentaire statique dans le code.
J'ai aussi rencontrez ce problème que j'ai contourner en instanciant un objet [ OutlookExpress ] ,
qui est présent par défaut sous WXP et ce même s'il n'est pas configurer.
À la demande de certains CCMISTES, j'ai inclu beaucoup de commentaire statique dans le code.
Option Explicit ' 'Déclaration de constantes Const PourLecture = 1 Const cteAdresseSource = "monadresse@monserveur.net" Private Sub cmd_Click(Index As Integer) ' Ici le paramètre signifie que le bouton ' fait partie d'un groupe et l'Index est le no ' du bouton If (Index > 0) Then ' Déclaration de variables ' Objet courriel Dim objMail As Object ' Adresse de destination Dim sDestination As String ' Nom du fichier en pièce jointe Dim sPieceJointe As String ' Variable contenant l'objet du courriel Dim msgTitre As String ' Variable contenant le corps du message Dim msgTexte As String ' Variable boolèen pour savoir si ' on doit incluse le texte du fichier ' texte dans le corps du message ou ' si on doit inclure le fichier en ' pièce jointe Dim Drapeau As Boolean ' Instancié un objet "courriel" Set objMail = CreateObject("CDO.Message") ' Initialisation de la variable Drapeau = False ' Affectation de l'adresse courriel du destinataire sDestination = "destinataire@serveur.net" ' Affectation du titre msgTitre = "Automatisme" ' Affectation du corps di message msgTexte = "Bonjour," & vbLf & "Corps du message" ' Affectation du nom du fichier incluant sa localisation sPieceJointe = "D:\Monfichier.txt" ' D'où pièce jointe existe -> Drapeau = Vrai Drapeau = True ' Avec objet courriel With objMail ' Ligne à modifier selon l'adresse de l'envoyeur ' Affectation à la propriété [ .From ] de l'adresse ' de l'envoyeur .From = cteAdresseSource ' Idem pour le destinataire .To = sDestination ' Affectation du titre ( objet du message ) .Subject = msgTitre ' Ligne à modifier selon le texte voulu ! ' Si pièce jointe existe If (sPieceJointe <> "") Then ' Si le texte de la pièce jointe doit ' être inclus dans le corps - Utilisation de la ' fonction [ LirePieceJointe ] qui retourne le ' contenu du fichier texte If (Drapeau = True) Then .TextBody = msgTexte & vbLf & LirePieceJointe(sPieceJointe) & vbLf Else ' Sinon spécifié qu'il est inclu en pièce jointe ' dans le corps du message .TextBody = msgTexte & vbLf & "Pièce jointe incluse : " & vbLf End If Else ' Sinon spécifié dans le corps qu'il n'y a pas de pièce jointe .TextBody = msgTexte & vbCrLf & "Aucune Pièce jointe" & vbCrLf End If ' Ligne à modifier selon l'adresse du serveur SMTP ' Ici "smtp.serveur.net" doit correspondre à votre FAI ' exemple : [ smtp.free.fr ] .Configuration.Fields _ ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.serveur.net" ' Aucune modification à cette ligne .Configuration.Fields _ ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 ' Aucune modification à cette ligne .Configuration.Fields.Update ' Si on veut inclure le fichier en pièce jointe If ((sPieceJointe <> "") And (Drapeau = False)) Then objMail.AddAttachment (sPieceJointe) End If ' Envoyer le message .Send End With ' Libération de l'objet instancié Set objMail = Nothing MsgBox "Courriel envoyé !" Else ' Fermeture de la forme pour envoi de courriel Unload Me End If End Sub ' ' Ici la fonction n'étant pas typé, elle est de type Variant ' et peut retourner a peu près n'importe quoi. Function LirePieceJointe(LeFichier) Dim objFSO, CeFichier ' Instancié un objet du système de fichier Set objFSO = CreateObject("Scripting.FileSystemObject") ' Si le fichier existe If (objFSO.FileExists(LeFichier)) Then ' Instancié un poignée sur le fichier pour l'ouvrir ( une main sur ) Set CeFichier = objFSO.OpenTextFile(LeFichier, PourLecture) ' Lire tout le contenu du fichier LirePieceJointe = CeFichier.ReadAll ' Fermer le fichier CeFichier.Close ' Libérré l'objet du fichier Set CeFichier = Nothing End If ' Libérré l'objet du système de fichier Set objFSO = Nothing End Function '
3 févr. 2009 à 14:15
Je teste cela de suite et vous donne un retour asap :)
Mais vu comme ça ça à l'air d'être un très bon workaround à une solution à développer (qui n'a pas l'air d'être envisageable de toute façon^^)
'vous tiens au jus !