Ecrire une macro excel vers outlook
luterman
Messages postés
8
Statut
Membre
-
Khem -
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.
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
-
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 -
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 -
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. -
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
ah oui, et je veux envoyer une pièce jointe mais pas mon classeur mais un pdf comment dois-je faire????
-
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 -
Je viens juste de lire ta réponse, merci mike-31 d'avance, c parfait ^^, j'attends ton bout de code
-
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
-
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? -
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 -
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. -
-
Super code, merci Mike-31.
J'aimerai savoir si il est également possible d'ajouter la signature par défaut d'Outlook.
Khem