Envoi de mails

D

Dan

Guest
salut à tous, est possible d'envoyer par mail (Outlook
Express)à partir d'Excel en VBA, en récupérant les adresses mails contenues sur une feuille de calcul, ou une colonne par exemple?
Merci
 
P

Pascal

Guest
Salut,

J'espère que ceci répond à tes attentes ...
Attention moi je travaille en L1C1 et non en A1 (outils/options onglet général),je trouve ça plus pratique (avis personnel...)

Sub envoie()
Set ol = CreateObject("outlook.application")
Set mail = ol.createitem(olmailitem)

'Selection des destinataires
Sheet("nom_onglet").Select
num_ligne = 1
Do While Cells(num_ligne, 1) <> ""
mail.Recipients.Add Cells(num_ligne, 1)
num_ligne = num_ligne + 1
Loop

mail.Subject = "Inscrire ici le sujet de l'envoie" 'peut faire réference à une cellule
mail.body = "Inscrire ici le corps du message" 'peut faire réference à une cellule

'Selection des adresses des fichiers a joindres s'il y a besoin
'(Adresse des fichiers du style "c:\...\mon-fichier")
Sheet("nom_onglet").Select
num_ligne = 1
Do While Cells(num_ligne, 2) <> ""
mail.Attachments.Add Cells(num_ligne, 2)
num_ligne = num_ligne + 1
Loop

mail.OriginatorDeliveryReportRequested = True 'accusé de reception
mail.ReadReceiptRequested = True 'accusé de lecture
mail.send

End Sub


Bon courage

Pascal
 
P

Pascal

Guest
Re-salut Dan,

Pour changer, j'ai voulu aller trop vite (copier/coller et autre...). il faut mettre un "s" à sheet et écrire
mail.Recipients.Add Cells(num_ligne, 1).value à la place de mail.Recipients.Add Cells(num_ligne, 1)
et
mail.Attachments.Add Cells(num_ligne, 2).value à la place de
mail.Attachments.Add Cells(num_ligne, 2)

Désolé, et bon courage

Pascal
 
D

Dan

Guest
Je ne sais pas si c'est parce que j'utilise outloox express ou tout simplement parce que je ne suis pas assez calé en VBA, mais cela ne marche pas ...
Voici la macro que j'ai récupérée sur un autre forum, qui me permet effectivement de séléctionner la plage de cellules à envoyer (le mail est placé dans la boite d'envoi d'outlook express, donc OK...) si tu pouvais juste la modifier pour choisir les destinataires à partir d'une colonne ou ligne Excel ce serait super...
Merci d'avance Pascal et désolé pour mes lacunes basiques.


Sub EnvoiPlageDonnéeParCourriel()

Dim Plage As Range, T As Variant, A As Long
Dim Shap As Object, B As Integer

Application.ScreenUpdating = False
With Worksheets("Feuil1")
Set Plage = Worksheets("feuil1").Range("A1:A10")
T = Plage
.Copy
End With

A = Plage.Rows.Count
B = Plage.Columns.Count

With ActiveWorkbook
With .VBProject.VBComponents(ActiveSheet.Name).CodeModule
.deletelines 1, .countoflines
End With
With .ActiveSheet
.Cells.Clear
.Range(Cells(1, 1), Cells(A, B)) = T
For Each Shap In .Shapes
Shap.Select Replace:=False
Next
Selection.Delete
End With
SendKeys "(%{E})", False
.SendMail Recipients:="azerty@serveur.fr", , Subject:="Test"
.Close savechanges:=False
End With
Set Plage = Nothing: Set Shap = Nothing

End Sub
 
P

Pascal

Guest
Dan,

A priori la macro que je t'avais transmis ne fonctionne pas avec outlook express. (Ca fonctionne avec outlook je te le confirme).
Probablement faudrait il pour que ça fonctionne remplir le carnet d'adresse d'outlook, mais bon ... j'ai bricolé la macro que tu m'as transmise, j'espère que cette fois tu ne seras pas déçu. tu trouveras le fruit de mes cogitations dans le fichier joint

Bon courage,
A+
Pascal
 

Pièces jointes

  • envoi.zip
    15.2 KB · Affichages: 35
  • envoi.zip
    15.2 KB · Affichages: 38
  • envoi.zip
    15.2 KB · Affichages: 35
D

Dan

Guest
Je tenais d'abord à te remercier pour ta gentillesse Pascal, j'ai testé ta première Macro sur Outlook et ça marche, mais la colonne entière d'adresse mails est envoyée; comment faire pour ne sélectionner une adresse mail qui ne se trouve que dans une seule cellule (par exemple: D2)?
Merci pour ta réponse.

Sub envoie()
Set ol = CreateObject("outlook.application")
Set mail = ol.createitem(olmailitem)

'Selection des destinataires
Sheets("feuil1").Select
num_ligne = 1
Do While Cells(num_ligne, 1) <> ""
mail.Recipients.Add Cells(num_ligne, 1).Value
num_ligne = num_ligne + 1
Loop

mail.Subject = "Inscrire ici le sujet de l'envoie" 'peut faire réference à une cellule
mail.body = "Inscrire ici le corps du message" 'peut faire réference à une cellule

'Selection des adresses des fichiers a joindres s'il y a besoin
'(Adresse des fichiers du style "c:\...\mon-fichier")
Sheets("feuil1").Select
num_ligne = 1
Do While Cells(num_ligne, 2) <> ""
mail.Attachments.Add Cells(num_ligne, 2).Value
num_ligne = num_ligne + 1
Loop

mail.OriginatorDeliveryReportRequested = True 'accusé de reception
mail.ReadReceiptRequested = True 'accusé de lecture
mail.send


End Sub
 
D

Dan

Guest
Je tenais d'abord à te remercier pour ta gentillesse Pascal, j'ai testé ta première Macro sur Outlook et ça marche, mais la colonne entière d'adresse mails est envoyée; comment faire pour ne sélectionner une adresse mail qui ne se trouve que dans une seule cellule (par exemple: D2)?
Merci pour ta réponse.

Sub envoie()
Set ol = CreateObject("outlook.application")
Set mail = ol.createitem(olmailitem)

'Selection des destinataires
Sheets("feuil1").Select
num_ligne = 1
Do While Cells(num_ligne, 1) <> ""
mail.Recipients.Add Cells(num_ligne, 1).Value
num_ligne = num_ligne + 1
Loop

mail.Subject = "Inscrire ici le sujet de l'envoie" 'peut faire réference à une cellule
mail.body = "Inscrire ici le corps du message" 'peut faire réference à une cellule

'Selection des adresses des fichiers a joindres s'il y a besoin
'(Adresse des fichiers du style "c:\...\mon-fichier")
Sheets("feuil1").Select
num_ligne = 1
Do While Cells(num_ligne, 2) <> ""
mail.Attachments.Add Cells(num_ligne, 2).Value
num_ligne = num_ligne + 1
Loop

mail.OriginatorDeliveryReportRequested = True 'accusé de reception
mail.ReadReceiptRequested = True 'accusé de lecture
mail.send


End Sub
 
P

Pascal

Guest
La macro que je t'envoie dans le fichier joint, permet de soit d'envoyer toute la liste de destinanaire, soit d'envoyer à un seul destinataire. Pour cela il suffit de se positionner sur la cellule qui contient l'adresse qui t'interrese (ex : D2) et ensuite de cliquer sur le bouton "envoyer".
Bon courage

Pascal
 

Pièces jointes

  • envoie2.zip
    14 KB · Affichages: 44
D

Duriz

Guest
Salut Dan, Pascal et tout les autres !

J'ai créé une application récemment avec un bouton pour envoyer un mail avec le fichier en pièce jointe. Je suis passé par l'aide dans VBA(rechercher "Delivery"). J'ai utilisé le code quasi tel que et ça marche.

Il faut savoir que le progr. est utilisé sur un ordinateur connecté à un réseau et que tous les destinataires sont dans déjà dans le carnet d'adresse... peut être (voire surement avec la bande de félé du Module qu'il y a ici !) qu'il y a un moyen de bidouiller sur le destinataire.

Bref si le voulez, jettez y un oeil, ça pourra peut être vous aider...

A+, Duriz
 

Discussions similaires

Réponses
2
Affichages
300

Statistiques des forums

Discussions
312 490
Messages
2 088 873
Membres
103 980
dernier inscrit
grandmasterflash38