Bouton ou "ctrl+m" pour envoyer un mail

lolozoulette -  
lolozoulette Messages postés 5 Statut Membre -
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. lolozoulette Messages postés 5 Statut Membre
     
    Bonjour,

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

    bonne journée
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      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. lolozoulette Messages postés 5 Statut Membre
     
    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. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      tu as oublié de mettre ceci à la fin avant End Sub:

      'test envoi de l'email
              Call EnvoyerEmail(MonSujet, MonDestinataire, MonContenu, MaPieceJointe)
      0
      1. lolozoulette Messages postés 5 Statut Membre > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        j'ai testé mais j'ai ce message d'erreur
        Erreur de compilation :
        Sub ou Function non definie
        0
      2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > lolozoulette Messages postés 5 Statut Membre
         
        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

        @+
        0
      3. lolozoulette Messages postés 5 Statut Membre > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        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
        0