Envoi de mail groupé avec pièces jointes différentes
Bonjour,
Je voudrais un code VBA permettant d'envoyer d'excel vers OUTLOOK un mail à plusieurs destinataires avec des pièces jointes différentes.
Pour ce faire sur une feuille :
colonne A les adresses mails
colonne B les pièces jointes en lien hypertexte
En recherchant sur le web j'ai trouvé ce code qui ne fonctionne pas, mais qui m'a l'air un bon début
Dim OlApp As Outlook.Application
Dim OlItem As Outlook.Application
Sub envoi()
Dim cel As Range, fc As String, admail As String
Dim responsable As String, messmail As String
responsable = "Toto"
'ci-dessous une feuille "adresses"
For Each cel In Sheets("adresses").Range("A2:a33") 'si les données (adresses mail et fichier à envoyer) sont en A et B
admail = cel.Value
fc = cel(1, 2).Value 'attention mettre chemin complet du fichier à envoyer
messmail = "Bonjour" & Chr(10) & "Ci-joint, le fichier" & Chr(10) & Chr(10) & responsable
'ci-dessous vérifier le chemin d'outlook
Shell """C:\Program Files (x86)\Microsoft Office\Office12\OUTLOOK.EXE"""
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
With olmail
.To = admail
.Subject = "CHALETS A JOUR" 'Sujet
.Body = messmail 'Corps du mail
.Attachments.Add fc
.Display '.Send 'On peut switcher entre .send et .display selon que l'on veut envoyer le mail (send) ou seulement le préparer et le vérifier(display)
End With
End sub
Il semble avoir problème de déclaration
Quelqu'un peut-il m'aider ?
Merci d'avance
Amicalement
Edit : en réfléchissant est-il aussi possible d'avoir un code qui permet de lister sur une feuille excel les liens hypertexte des fichiers contenus dans un répertoire. Ce qui m'aiderait à récupérer les liens et les affecter aux adresses mail correspondantes
Bonsoir,
une proposition de correction de ta macro
Sub Envoi_mail()
'on cré le fichier PDFdans le même dossier que le fichier source
Set OutApp = CreateObject("Outlook.Application")
For Each cel In Sheets("adresses").Range("A2:a33") 'si les données (adresses mail et fichier à envoyer) sont en A et B
fc = cel(1, 2).Value
Set objmessage = OutApp.CreateItem(0)
With objmessage
.Subject = "CHALETS A JOUR" 'Sujet
.To = cel.Value 'Email du destinataire doit-être correct ici
.Body = "Bonjour" & Chr(10) & "Ci-joint, le fichier" & Chr(10) & Chr(10) & responsable
.Attachments.Add fc
.Send
End With
Set objmessage = Nothing
Next
End Sub
par contre j'ai pas compris ce que tu voulais dans ce que tu as mis dans ton edit :
Merci beaucoup je vais tester ça.
Dans mon edit, pour être plus clair : les pièces jointes pdf sont dans un dossier.
je voudrais une macro sur excel qui liste dans une colonne tous les liens des fichiers (pdf ou autres) présent dans le dossier choisi,
Ainsi au lieu d'insérer sur ma feuille 1 par 1 le lien hypertexte du pdf correspondant au mail .
En ayant la liste de tous les liens listés par une macro il me reste ainsi qu'à placer le lien du fichier en face du mail correspondant.
J'espère avoir été clair
Encore merci pour le premier code
Bonjour,
une proposition pour la liste des fichiers
Sub listoffiles()
'Ouverture du fichier
Set r = Application.InputBox("sélectionner la première cellule qui doit recevoir un nom de fichier", Type:=8)
If r.Count > 1 Then Exit Sub
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
With fd
.Title = "Sélectionner répertoire"
.Filters.Clear
.AllowMultiSelect = False
If .Show = -1 Then
chemin = .SelectedItems(1)
f = Dir(chemin & "\*.pdf")
While f <> ""
l = l + 1
r.Cells(l, 1) = Replace(chemin & "\" & f, "\\", "\")
f = Dir()
Wend
End If
End With
End Sub
Un grand MERCI
Tout fonctionne à merveille et correspond exactement à ce que je voulais.
C'est impressionnant tout ce que l'on peut faire avec excel et vba.
Et franchement vous êtes très fort (toi et les personnes qui fréquentent le forum).
Je commence à me débrouiller en vba mais je suis très loin de ce que vous êtes capable de faire.
C'est sympa de partager votre savoir pour aider les autres, j'apprécie beaucoup
Amicalement
Bonjour,
J'aurai aussi besoin d'aide ma demande tire sur la tienne.
J'ai un tableau de données extraites de ma compta (factures de ventes ) je veux sur excel creer une lettre, un relevé pour tous les clients pour les factures du mois précédent afin que ceux ci puissent voir a l'avance si occupe facture ne manque à l'appel. J'avais réussi à faire une lettre avec des formules qui enumeraient toutes les factures concernant un clients mais il faut à chaque fois que je sélectionne le client et exporter et envoyer après. Imaginons une grande base... du coup j aimerais une formule un procédé une boucle VBA, j'y connais rien, afin que dans la lettre dès que toutes les factures concernant un tiers sont listées ligne par ligne avec la somme à la fin pour un client, il enregistre le fichier, envoie par mail et passe au client suivant. Mercii de m'aider
Bonjour,
Ton message ne suscite pas beaucoup de réactions. Je te conseille d'ouvrir un nouveau sujet et de suivre les recommandations du forum (voir 1er message du forum ou lien dans ma signature). tu nous indiques précisément ce que tu veux, tu nous mets un fichier avec des données exemple (situation de départ, règles de transformation éventuelles et situation après exécution de la macro).