IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème envoie mail via macro VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2019
    Messages : 1
    Par défaut Problème envoie mail via macro VBA
    Bonjour à tous,
    Je viens vers vous car j’aurais besoin d’aide afin d’envoyer un mail outlook via une macro en fonction de données du TCD suivant

    Nom : image1.png
Affichages : 273
Taille : 25,3 Ko



    Voici le code que j'ai essayé mais ça ne marche pas et je ne comprends pas pourquoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Sub macor()
    Dim Objet As String
    Dim OutlookApp As Object
    Dim OutlookMail As Object
     
     
        'Initialisation des variables
     
        Objet = "pointage factures"
     
     
        Set OutlookApp = CreateObject("outlook.application")
        Set OutlookMail = OutlookApp.createitem(0)
     
     
        With OutlookMail
            .To = Range("B3")
            .Subject = Objet
            .body = "Bonjour," & vbCrLf & "Vous n'avez pas pointé les factures des périodes suivantes: " & vbCrLf &  Range("A7:A20") & vbCrLf  & "Bien cordialement"
            .Display
     
     
     
        End With
     
    End Sub

    Je ne comprends pas pourquoi pas ça ne marche pas. J’ai mis Range("A7:A20") car le nombre de factures à pointer peut varier de 1 à 13.
    PS : voici la base de données utilisée si ça peut vous aider pour mieux comprendre le problème

    Nom : image2.png
Affichages : 271
Taille : 39,5 Ko



    Merci de votre aide, je débute sur VBA

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,


    ça ne marche pas, c'est très vague.

    Si tu veux insérer une plage (et non une simple cellule) dans le corps du mail, il faut la convertir en HTML

    voici une fonction pour ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    36
    37
    Function RangetoHTML(ByVal Rng As Range)
        Dim fso As Object
        Dim ts As Object
        Dim TempFile As String
        Dim TempWB As Workbook
     
        TempFile = VBA.Environ$("temp") & "\" & VBA.Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
        Rng.Copy
        Set TempWB = Workbooks.Add(1)
        With TempWB.Sheets(1)
            .Cells(1).PasteSpecial Paste:=12
            .Cells(1).PasteSpecial Paste:=-4122
            .Cells(1).Select
            Application.CutCopyMode = False
            On Error Resume Next
                .DrawingObjects.Visible = True
                .DrawingObjects.Delete
                .Columns.AutoFit
            On Error GoTo 0
        End With
     
        With TempWB.PublishObjects.Add(SourceType:=xlSourceRange, Filename:=TempFile, Sheet:=TempWB.Sheets(1).Name, Source:=TempWB.Sheets(1).UsedRange.Address, HtmlType:=xlHtmlStatic)
            .Publish (True)
        End With
     
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
        RangetoHTML = ts.ReadAll
        ts.Close
        RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", "align=left x:publishsource=")
        TempWB.Close savechanges:=False
        Kill TempFile
     
        Set ts = Nothing
        Set fso = Nothing
        Set TempWB = Nothing
    End Function

    et un exemple d'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With OutlookMail
        .To = Range("B3").Value
        .Subject = Objet
        .body = "Bonjour," & vbCrLf & "Vous n'avez pas pointé les factures des périodes suivantes: " & vbCrLf & RangetoHTML(Range("A7:A20")) & vbCrLf & "Bien cordialement"
        .Display
    End With
    Par ailleurs, je te conseille de préfixer tes ranges par la feuille qui les contient

Discussions similaires

  1. [XL-2013] Enregistrer un doc excel en pdf pour un envoi mail via macro
    Par lili17892 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/01/2018, 19h19
  2. Problème envoi mail via PHP
    Par Bizoo dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 17/10/2011, 14h15
  3. Problème envoi mail via PHP
    Par Bizoo dans le forum IIS
    Réponses: 4
    Dernier message: 07/09/2011, 11h07
  4. Problème envoi mail via formulaire
    Par sleeg dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/09/2010, 01h00
  5. [XL-2003] Envoi mail via vba - outlook 2003
    Par NELAIN dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/04/2009, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo