• Initiateur de la discussion Initiateur de la discussion Dan
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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
 
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

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
 
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
 
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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
12
Affichages
462
Réponses
2
Affichages
135
Réponses
2
Affichages
116
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
908
Retour