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
Khem - 8 nov. 2013 à 11:09
A voir également:
- Ecrire une macro excel vers outlook
- Liste déroulante excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Formule excel - Guide
- Créer une adresse mail outlook - Guide
- Déplacer une colonne excel - Guide
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
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
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
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
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
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
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
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.
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.
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
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
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
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
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????
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
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
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
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
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
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?
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?
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
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
Merci d'avance ! ! ! !
Luterman
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
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.
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.
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
5 avril 2011 à 18:01
version excel 2007