Bouton ou "ctrl+m" pour envoyer un mail

Signaler
-
Messages postés
4
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
23 mars 2021
-
Bonjour
J'ai besoin d’envoyer toutes les fins de semaines un fichier Excel.
Toujours le même fichier aux mêmes (7) personnes. Via Outlook.
avec en plus du fichier un message :
Bonjour
merci de trouver ci-joint la dernière version du fichier de remboursement.
Bien à vous
Laurence
Si qq'un peut m'envoyer un code VBA qui fait le Job ?
merci à tous pour votre aide
Belle après-midi
Laurence

3 réponses

Messages postés
7340
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 avril 2021
625
Messages postés
4
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
23 mars 2021

Bonjour,

Merci, mais je n'arrive pas à inclure de texte, ni plusieurs adresses mail.

bonne journée
Messages postés
7340
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 avril 2021
625
Tout est expliqué là:

Sub TestEnvoiEmail_Variables()
'par Excel-Malin.com ( https://excel-malin.com )

'définition des variables
Dim MonSujet As String
Dim MonDestinataire As String
Dim MonContenu As String
Dim MaPieceJointe As String

'attribution des valeurs aux variables
MonSujet = "Test d'email d'Excel avec variables"
MonDestinataire = "jean.dupont@dupont.fr;pierre.durand@durand.fr;alain.duval@duval.fr"
MonContenu = "Bonjour Jean, voici un petit message de test... Avec un fichier en plus."
MaPieceJointe = "C:\Test\MonFichierExcel.xlsx"
    
    'test envoi de l'email
        Call EnvoyerEmail(MonSujet, MonDestinataire, MonContenu, MaPieceJointe)

MsgBox "Test terminé..."
End Sub


Voilà
Messages postés
4
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
23 mars 2021

Re,
j ai essayé en copiant et en mettant les données nécessaires mais j'ai un message d'erreur

Ci dessous ce que j'ai écrits :
Sub TestEnvoiEmail_Variables()

'définition des variables
Dim MonSujet As String
Dim MonDestinataire As String
Dim MonContenu As String
Dim MaPieceJointe As String

'attribution des valeurs aux variables
MonSujet = "FICHIER REMBOURSEMENT DU SERVICE CLIENT"
MonDestinataire = "toutes les adresses mail séparées par ; "
MonContenu = "Bonjour à tous, ci-joint la dernière version du Fichier des Remboursements. Belle journée. Laurence."
MaPieceJointe = "C:\Users\lllo\Desktop\Fichier remboursement CRM.xlsm"
    
   
End Sub




Ca ne marche pas....
Messages postés
7340
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 avril 2021
625
tu as oublié de mettre ceci à la fin avant End Sub:

'test envoi de l'email
        Call EnvoyerEmail(MonSujet, MonDestinataire, MonContenu, MaPieceJointe)
Messages postés
4
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
23 mars 2021
>
Messages postés
7340
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 avril 2021

j'ai testé mais j'ai ce message d'erreur
Erreur de compilation :
Sub ou Function non definie
Messages postés
7340
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 avril 2021
625 >
Messages postés
4
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
23 mars 2021

Je me demande si tu as lu la totalité de la procédure!
il faut mettre ceci aussi, si tu veux que cela fonctionne!

'Ajouter la Référence Microsoft Outlook X.0 Object Library
Sub EnvoyerEmail(ByVal Sujet As String, ByVal Destinataire As String, ByVal ContenuEmail As String, Optional ByVal PieceJointe As String)
'par Excel-Malin.com ( https://excel-malin.com )

On Error GoTo EnvoyerEmailErreur

'définition des variables
Dim oOutlook As Outlook.Application
Dim oMailItem As Outlook.MailItem

    'vérification si le Contenu du mail n'est pas vide. Si oui, email n'est pas envoyé. Si vous voulez pouvoir envoyer les email vides, mettez en commentaire les 4 lignes de code qui suivent.
    If Len(ContenuEmail) = 0 Then
        MsgBox "Mail non envoyé car vide", vbOKOnly, "Message"
        Exit Sub
    End If
    
    'préparer Outlook
    PreparerOutlook oOutlook
    Set oMailItem = oOutlook.CreateItem(0)
    
    'création de l'email
    With oMailItem
        .To = Destinataire
        .Subject = Sujet
        
        'CHOIX DU FORMAT
        '----------------------
        'email formaté comme HTML (aussi par défaut)
            .BodyFormat = olFormatHTML
            .HTMLBody = "<html><p>" & ContenuEmail & "</p></html>"
            
        'OU
            
        'email formaté comme simple texte sans formats
            '.BodyFormat = olText
            '.Body = ContenuEmail
            
        'OU
                
        'email formaté comme texte riche (= avec formats)
            '.BodyFormat = olFormatRichText
            '.Body = ContenuEmail
        '----------------------
        
        If PieceJointe <> "" Then .Attachments.Add PieceJointe

       .Display   '<- affiche l'email (si vous ne voulez pas l'afficher, mettez cette ligne en commentaire)
       .Save      '<- sauvegarde l'email avant l'envoi (pour ne pas le sauvegarder, mettez cette ligne en commentaire)
       .Send      '<- envoie l'email (si vous voulez seulement préparer l'email et l'envoyer manuellement, mettez cette ligne en commentaire)
    End With
    
   'nettoyage...
    If (Not (oMailItem Is Nothing)) Then Set oMailItem = Nothing
    If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing
    
Exit Sub
EnvoyerEmailErreur:
    If (Not (oMailItem Is Nothing)) Then Set oMailItem = Nothing
    If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing
  
    MsgBox "Le mail n'a pas pu être envoyé...", vbCritical, "Erreur"
End Sub


Private Sub PreparerOutlook(ByRef oOutlook As Object)
'par Excel-Malin.com ( https://excel-malin.com )

'------------------------------------------------------------------------------------------------
'Ce code vérifie si Outlook est prêt à envoyer des emails... Et s'il ne l'est pas, il le prépare.
'------------------------------------------------------------------------------------------------

On Error Resume Next
    'vérification si Outlook est ouvert
    Set oOutlook = GetObject(, "Outlook.Application")
    
    If (Err.Number > 0) Then 'si Outlook n'est pas ouvert, une instance est ouverte
        Err.Clear
        Set oOutlook = CreateObject("Outlook.Application")
        
        If (Err.Number > 0) Then
            MsgBox "Une erreur est survenue lors de l'ouverture de Outlook..."
            Exit Sub
        Else
        End If
        
    Else    'si Outlook est ouvert, l'instance existante est utilisée
    End If

End Sub


Relis toute la procédure à effectuée

@+
Messages postés
4
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
23 mars 2021
>
Messages postés
7340
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 avril 2021

Bonjour
Encore merci pour ton aide. mais je n'y arrive pas....
Tanpis je garde la bonne vieille méthode joindre un fichier.
bonne journée