Ecrire une macro excel vers outlook

Fermé
luterman Messages postés 7 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 11 mai 2011 - Modifié par irongege le 29/03/2011 à 15:00
 Khem - 8 nov. 2013 à 11:09
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.
A voir également:

13 réponses

Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
29 mars 2011 à 11:23
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
luterman Messages postés 7 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 11 mai 2011
29 mars 2011 à 11:31
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
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
Modifié par Mike-31 le 29/03/2011 à 17:53
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
luterman Messages postés 7 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 11 mai 2011
29 mars 2011 à 15:30
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luterman Messages postés 7 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 11 mai 2011
29 mars 2011 à 15:32
ah oui, et je veux envoyer une pièce jointe mais pas mon classeur mais un pdf comment dois-je faire????
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
29 mars 2011 à 18:52
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
Je viens juste de lire ta réponse, merci mike-31 d'avance, c parfait ^^, j'attends ton bout de code
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
31 mars 2011 à 21:55
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
Super code merci.

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

Merci
0
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
luterman Messages postés 7 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 11 mai 2011
5 avril 2011 à 12:04
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
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
Modifié par Mike-31 le 5/04/2011 à 17:43
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
luterman Messages postés 7 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 11 mai 2011
5 avril 2011 à 18:01
version excel 2007
0
Super code, merci Mike-31.

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

Khem
0