Ecrire une macro excel vers outlook

luterman Messages postés 8 Statut Membre -  
 Khem -
Bonjour,

depuis quelques jours, j'essaie de réaliser une macro EXCEL qui permet d'envoyer un mail via OUTLOOK.

En cliquant sur un bouton, la macro doit envoyer un mail.

Remarque : Dans le fichier excel, sur une des feuilles, j'ai une colonne qui recense plusieurs adresses mails.

Je souhaiterais que ces adresses soit mise automatiquement dans le "A" du mail.

Dernière petite chose, le corps du texte, sera toujours le même (existe il un bout de code macro pouvant rentrer dans la Macro

Merci d'avance pour vos réponses, car je suis vraiment dans la panade.

13 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    Il y a plusieurs discussions actuellement sur le forum qui traite ce problème,

    tu peux effectivement utiliser outlook mais comme Outlook ne fait plus parti de pack office de base je préfére passer directement par le SMTP (courrier sortant).
    que veux tu faire exactement envoyer en pièce jointe une partie de la feuille avec un message ou copier une partie de la feuille avec le message dans le corps du message

    tu peux regarder a la fin de cette discussion en attendant

    https://forums.commentcamarche.net/forum/affich-21042611-envoi-mail-en-vba-avec-corps-message#p21417676
    0
  2. luterman Messages postés 8 Statut Membre
     
    en fait

    j'ai un fichier excel regroupant dans une colonne, des adresses mails
    (A1 : *******@***.com ; A2 : etc....)

    Je veux que cette macro prenne toutes les adresses et qu'elle les met dans le "A" (case des destinataires) d'un mail.

    Et aussi le corps du message soit toujours le même (donc faire un envoi multiple du même Email pour les différents destinataires
    0
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    regarde si c'est ce que tu cherches

    Sub envoimail()
    Dim adresse(1 To 10) 'Adresse de la ligne 1 à 10
    Set malist = Sheets("Feuil1").Range("A1:A10")
    Count = 1
    For Each Envoi In malist
    If Len(Envoi) Then adresse(Count) = Envoi: Count = Count + 1
    Next
    Sheets("Feuil2").Copy
    ActiveWorkbook.SendMail Recipients:=Array(adresse(1), adresse(2), _
    adresse(3), adresse(4), adresse(5), adresse(6), adresse(7), adresse(8), adresse(9), adresse(10)), Subject:="Demande rendez-vous " & Format(Date, "dd/mmm/yy")
    ActiveWorkbook.Close False
    End Sub

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
  4. luterman Messages postés 8 Statut Membre
     
    ca marche très bien merci, autre petit chose

    Si je veux insérer un texte dans le mail, comme dois-je faire? (ou peux tu m'écrire le code stp)

    En tout cas tu me sauve la vie

    Merci d'avance !

    Luterman
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. luterman Messages postés 8 Statut Membre
     
    ah oui, et je veux envoyer une pièce jointe mais pas mon classeur mais un pdf comment dois-je faire????
    0
  7. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    je t'écris un code dans la soirée pour envoyer une feuille de ton classeur en PDF avec possibilité d'écrire du texte sans passer par une messagerie
    0
  8. luterman
     
    Je viens juste de lire ta réponse, merci mike-31 d'avance, c parfait ^^, j'attends ton bout de code
    0
  9. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Le code complet pour envoyer mail via Outlook avec pièce jointe, message, titre, gestion des erreurs et explications un exemple avec ce lien

    http://cjoint.com/?1dFv58GYiub

    Option Explicit

    Sub envoi_Feuille()
    Dim olapp As Outlook.Application
    Dim malist, Count, Envoi, AdresseRépertoire As Variant
    On Error Resume Next
    '-------Contrôler dans Bisual Basic/Outils/Références/que Microsoft Outlook --,- Object Librairy est bien coché
    Dim adresse(1 To 10)
    '----------------------Création de la liste d'adresses mail contenus de la ligne 2 à 10
    Set malist = Sheets("Feuil1").Range("A2:A10")
    Count = 1
    For Each Envoi In malist
    If Len(Envoi) Then adresse(Count) = Envoi: Count = Count + 1
    Next
    '----------------------Copie de la liste d'adresse dans une cellule vide exemple H1
    [H1] = Array(adresse(1) & "; " & adresse(2) & "; " & _
    adresse(3) & "; " & adresse(4) & "; " & adresse(5) & "; " & adresse(6), adresse(7), adresse(8), adresse(9), adresse(10))
    '-------adresse du répertoire ou sera enregistré le fichier
    AdresseRépertoire = ActiveWorkbook.Path
    '---------------------copie de la feuille à envoyer
    Application.DisplayAlerts = False
    Sheets("Feuil2").Copy
    '---------------------Nom du fichier à envoyer
    ActiveWorkbook.SaveAs AdresseRépertoire & "\" & "Class.xls" ' ou adresse si le nom est dans une cellule Range("E2").Value & ".xls"
    ActiveWindow.Close
    '---------------------Envoi par mail
    Sheets("Feuil1").Select
    Range("H1").Select
    '---------------------contrôle la validité ou la présence d'adresse mail en H1
    If [H1] Like "*@*" Then
    '---------------------Le mail est envoyé que si y a des adresses feuille 1 en H1
    Do While Not IsEmpty(ActiveCell)
    Dim msg As MailItem
    Set olapp = New Outlook.Application
    Set msg = olapp.CreateItem(olMailItem)
    msg.To = Range("H1").Value 'Adresse de la cellule contenant la liste des adesses mails
    '--------------------Saisir le sujet de l'envoi
    msg.Subject = "Coucou c'est moi " ' ou saisir le sujet dans une cellule ex. Range("H2").Value
    '---------------------saisie du message
    msg.Body = "Bonjour" & Chr(13) & Chr(13) & "Veuillez trouver ci-joint" & Chr(13) & "copie du dossier" & Chr(13) & Chr(13) & "Cordialement"
    '---------------------ou saisir le message dans des cellules
    'msg.Body = Range("E5").Value & Chr(13) & Chr(13) & Range("E8").Value & Chr(13) & Chr(13)& Range("E10").Value
    '---------------------ou saisir le message dans des cellules
    '---------------------Adresse de la pièce jointe
    msg.Attachments.Add Source:=AdresseRépertoire & "\" & "Class.xls" ' ou adresse si le nom est dans une cellule Range("E2").Value & ".xls"
    msg.Send
    '---------------------effacement de la liste d'envoi
    [H1].ClearContents
    Loop
    Else
    MsgBox "Aucune adresse valide sélectionnée"
    End If
    Application.ScreenUpdating = True
    End Sub
    0
    1. Khem
       
      Super code merci.

      Y a-t-il moyen d'ajouter la signature par défaut d'Outlook à la fin du message ?

      Merci
      0
  10. luterman
     
    Bonjour mike-31

    Ta macro fonctionne très bien, mais concernant l'envoi en PDF (je ne veux pas envoyé mon classeur en PDF mais un autre fichier qui ne dépend pas de excel)

    As tu une solution?
    0
  11. luterman Messages postés 8 Statut Membre
     
    Pour que mon fichier fonctionne, il faudrait que les adresses soit mises en CCi, pour que personnes ne voit a qui je l'ai envoyé

    Merci d'avance ! ! ! !

    Luterman
    0
  12. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Pour envoyer en anonyme, remplacer .TO par .BCC

    objMessage.BCC

    tu peux me confirmer ta version Office ou du moins Excel !
    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
  13. luterman Messages postés 8 Statut Membre
     
    version excel 2007
    0
  14. Khem
     
    Super code, merci Mike-31.

    J'aimerai savoir si il est également possible d'ajouter la signature par défaut d'Outlook.

    Khem
    0