Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2250 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [RESOLU] mail auto s'affiche bien mais ne s'envoie pas

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] mail auto s'affiche bien mais ne s'envoie pas

n°2438684
wago
Posté le 20-01-2023 à 23:13:50  profilanswer
 

Bonjour,
 
3 jours que je suis dessus, là je craque.
J'essaye d'envoyer un mail automatiquement depuis Excel.
ce que je ne comprends pas c'est que la méthode display fonctionne, mais pas la send, et l'idée c'est que justement cela s'envoie tout seul...
ci dessous le code.
 

Code :
  1. Sub envoimail2()
  2. Dim CeFichier As String
  3. CeFichier = ThisWorkbook.Name
  4. Dim oOutlook As Object
  5. Set oOutlook = CreateObject("Outlook.Application" )
  6. Dim oMail As Object
  7. Set oMail = oOutlook.CreateItem(0)
  8. Dim oObjetWord As Object
  9. Set oObjetWord = oMail.GetInspector.WordEditor
  10. With oMail
  11.     .To = Workbooks(CeFichier).Worksheets("surveillance" ).Range("K2" )
  12.     .Subject = Workbooks(CeFichier).Worksheets("surveillance" ).Range("K4" )
  13. 'ca, ca marche, mais il me faut envoyer un tableau
  14. '    .Body = Workbooks(CeFichier).Worksheets("surveillance" ).Range("C2" )
  15. '    .Send
  16. 'ca, ca marche aussi mais c'est display
  17. '     Workbooks(CeFichier).Worksheets("surveillance" ).Range("C2:F3" ).Copy
  18. '    oObjetWord.Range(0).Paste
  19. '    .Display
  20. 'ca, ca ne marche pas, ca bloque sur .send avec Erreur 5
  21. 'argument ou appel de procédure incorrect
  22.      Workbooks(CeFichier).Worksheets("surveillance" ).Range("C2:F3" ).Copy
  23.      oObjetWord.Range(0).Paste
  24.     .Send
  25.    
  26. End With


 
Vous auriez des pistes?


Message édité par wago le 22-01-2023 à 22:20:56
mood
Publicité
Posté le 20-01-2023 à 23:13:50  profilanswer
 

n°2438774
wago
Posté le 22-01-2023 à 20:17:01  profilanswer
 

Alors solution trouvée, et c'était clairement pas si simple, un grand merci à BrunoM45 du forum developpez.net:
 
 

Code :
  1. Option Explicit
  2. ' Forum : https://www.developpez.net/forums/d [...] -vba-excel
  3. ' https://www.developpez.net/forums/u20954/brunom45/
  4. ' Constante type d'élément Outlook (pour le late binding)
  5. Const olMailItem As Integer = 0
  6. ' Constantes Formats de l'email
  7. Const olFormatHTML As Integer = 2
  8. ' Ce code permet d'intégrer une plage donnée dans le corps d'un mail
  9. Private Sub EnvoiMailAvecImg()
  10.   Dim OutApp As Object, OutMail As Object
  11.   Dim RngAcopier As Range
  12.   Dim StrHTML As String
  13.  
  14.   ' Définir la plage des cellules à envoyer
  15.   Set RngAcopier = ThisWorkbook.Sheets("surveillance" ).Range("C2:F3" )
  16.   ' Avec l'application
  17.   With Application
  18.     .EnableEvents = False ' Désactiver les évènements
  19.     .ScreenUpdating = False ' Désactiver le rafraichissement
  20.   End With
  21.   ' Créer une instance Outllok et Mail
  22.   Set OutApp = CreateObject("Outlook.Application" )
  23.   Set OutMail = OutApp.CreateItem(olMailItem)
  24.   With OutMail
  25.     .BodyFormat = olFormatHTML  ' Format HTML
  26.     .To = ThisWorkbook.Worksheets("surveillance" ).Range("K2" )
  27.     '.CC = "LaCopie@fai.fr"
  28.     '.BCC = "LaCopieCachee@fai.fr"
  29.     .Subject = ThisWorkbook.Worksheets("surveillance" ).Range("K4" )
  30.     StrHTML = "Bonjour, <br>" & "Vous trouverez ci-dessous le tableau"
  31.     .HTMLBody = StrHTML & RangetoHTML(RngAcopier)
  32.     .Send   'or use .Display
  33.   End With
  34.   With Application
  35.     .EnableEvents = True
  36.     .ScreenUpdating = True
  37.   End With
  38.   ' Effacer les variables objet
  39.   Set RngAcopier = Nothing: Set OutMail = Nothing: Set OutApp = Nothing
  40. End Sub
  41. Function RangetoHTML(Rng As Range)
  42.   Dim Fso As Object, Ts As Object
  43.   Dim TempFile As String
  44.   Dim TempWs As Worksheet
  45.   ' Créer le nom du fichier
  46.   TempFile = Environ$("temp" ) & "\" & Format(Now, "dd-mm-yy h-mm-ss" ) & ".htm"
  47.   ' Désactiver le rafraichissement ici aussi
  48.   Application.ScreenUpdating = False
  49.   ' Copier la plage et créer un classeur pour coller les données dedans
  50.   Set TempWs = ThisWorkbook.Worksheets.Add
  51.   Rng.Copy
  52.   With TempWs
  53.     With .Range(Rng.Address)
  54.       .PasteSpecial Paste:=8
  55.       .PasteSpecial xlPasteValues, , False, False
  56.       .PasteSpecial xlPasteFormats, , False, False
  57.     End With
  58.     Application.CutCopyMode = False
  59.     On Error Resume Next
  60.     .DrawingObjects.Visible = True
  61.     .DrawingObjects.Delete
  62.     On Error GoTo 0
  63.   End With
  64.   ' Publier la feuille dans un fichier HTML
  65.   With ThisWorkbook.PublishObjects.Add(SourceType:=xlSourceRange, _
  66.     Filename:=TempFile, Sheet:=TempWs.Name, Source:=Rng.Address, HtmlType:=xlHtmlStatic)
  67.     .Publish (True)
  68.   End With
  69.   ' Lire les données du fichier
  70.   Set Fso = CreateObject("Scripting.FileSystemObject" )
  71.   Set Ts = Fso.GetFile(TempFile).OpenAsTextStream(1, -2)
  72.   RangetoHTML = Ts.readall
  73.   Ts.Close
  74.   RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
  75.     "align=left x:publishsource=" )
  76.   ' supprimer la feuille
  77.   Application.DisplayAlerts = False
  78.   TempWs.Delete
  79.   Application.DisplayAlerts = True
  80.   ' Supprimer le fichier HTML
  81.   Kill TempFile
  82.   ' Effacer les variables objet
  83.   Set Ts = Nothing: Set Fso = Nothing: Set TempWs = Nothing
  84. End Function


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [RESOLU] mail auto s'affiche bien mais ne s'envoie pas

 

Sujets relatifs
Signature e-mail en HTML adaptative mode clair/sombre ?[Algorithme][Aide] Partons de vrai et bien.../...
[Résolu] API Maps : info-bulle qui s'affiche plus[VBS] Montage de Lecteurs-réseaux, et s'authentifier automatiqument
Envoi de mail par PHPSaisie d'un mdp auto dans un script
Désactiver Scrolling Auto de la page par la Molette (souris)[.NET] Envoi de mail derrière un reverse proxy ?
Besoins d'aide installation auto shop phpProblème reception mail depuis un formulaire (OVH)
Plus de sujets relatifs à : [RESOLU] mail auto s'affiche bien mais ne s'envoie pas


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR