Bouton ou "ctrl+m" pour envoyer un mail

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

  1. Bonjour,

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

    bonne journée
    0
    1. Contributeur
      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à
      0
  2. 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....
    0
    1. Contributeur
      tu as oublié de mettre ceci à la fin avant End Sub:

      'test envoi de l'email
              Call EnvoyerEmail(MonSujet, MonDestinataire, MonContenu, MaPieceJointe)
      0
    2. @cs_Le Pivertj'ai testé mais j'ai ce message d'erreur
      Erreur de compilation :
      Sub ou Function non definie
      0
    3. Contributeur
      @lolozouletteJe 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

      @+
      0
    4. @cs_Le PivertBonjour
      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
      0