Insertion automatique d'adresses électroniques

Bonjour,

Avec la macro ci-dessous - placée dans le fichier annexé - un courriel est préparé afin de pouvoir envoyer le fichier lui-même par voie électronique :

Sub Préparer_un_courriel()
Application.Dialogs(xlDialogSendMail).Show
End Sub

Est-il possible, en plus, que les adresses listées sur la deuxième feuille - et dont le nombre pourra varier à l'avenir - soient inscrites automatiquement dans le champ correspondant de ce courriel ?

Bonnes salutations.

Bonjour,

Hum.... même sujet qu'ici ... -> https://forum.excel-pratique.com/excel/preparation-automatique-d-un-courriel-t16923.html sur lequel je me penchais hier.

Essaie de combiner avec ceci :

Sub EnvoiMail()
Dim MailAd As String, MailAd1 As String, Subj As String, URLto As String
Dim nblig As Long
Dim i As Integer
nblig = ActiveSheet.Rows.Count
For i = Range("B" & nblig).End(xlUp).Row To 2 Step -1
MailAd = Range("B" & i) & ";"
MailAd1 = MailAd & MailAd1
Next i
URLto = "mailto:" & MailAd1 & "?subject=" & Subj
ActiveWorkbook.FollowHyperlink Address:=URLto
End Sub

Amicalement

Salut Dan,

Tout d’abord je tiens à te prier de bien vouloir excuser la fermeture de mon premier fil d’une manière un peu précipitée, mais comme je ne recevais pas de réponse et que j’avais découvert entre-temps la possibilité de préparer un courriel avec mon fichier en pièce jointe, j’ai voulu le faire savoir au Forum ; mais je conviens que j’aurais effectivement dû rester sur le premier fil. Désolé !!

J’ai maintenant fait des essais suite à ta réponse ci-dessus. Si je n’utilise que ton code, les adresses listées dans le fichier sont inscrites dans un courriel nouvellement préparé, c’est super.

Par contre, tous mes essais de combiner nos deux codes n’ont pas réussi. Soit seules les adresses sont inscrites et le fichier n’est pas joint, soit un courriel avec le fichier est préparé et je reçois un message d’erreur - malheureusement en allemand, puisque je suis au travail - et que je peux traduire de la manière approximative suivante : « Un champ de dialogue est ouvert. Fermer ce champs de dialogue et essayez à nouveau ». Lorsque je clique sur « OK », le courriel est visible à l’écran avec sa pièce jointe, mais sans les adresses.

Parmi les divers essais que j’ai faits, j’ai essayé d’appeler ton code depuis divers endroits du mien ; j’ai essayé d’appeler mon code depuis plusieurs endroits du tien ; j’ai essayé de copier les lignes de ton code pour les placer dans le mien de diverses manières ; j’ai essayé de placer la seule ligne de mon code à divers endroits du tien ; etc.

Merci infiniment pour ton aide et à la prochaine.

Bonjour

Avec ce Code de Joss.

Mais là, pour le coup, le message part dès que tu cliques sur le Bouton. (Testé)

Cordialement

83demo-28-04-2010.zip (10.69 Ko)

Salut Amadéus,

Merci beaucoup pour ta réponse. La solution que tu proposes pourrait effectivement convenir ; elle a cependant quelques inconvénients mineurs :

1) il est moyennement aisé de modifier la ligne « Concerne » du courriel (il faut modifier le code lui-même),

2) lorsque je lance le code, un message (depuis Outlook ???) m’indique que quelqu’un essaie d’envoyer un message à ma place et me demande de confirmer que je suis d’accord et surtout

3) on ne peut pas rajouter du texte au courriel.

Alors, je serais bien content si on pouvait combiner ton code avec les deux premiers indiqués dans les messages précédents afin qu’un courriel soit préparé avec les adresses et le fichier en pièce jointe, mais pas encore envoyé.

A vous relire.

Edit : Un autre inconvénient mineur est que l'on doit modifier le code à chaque fois que l'on inscrit une nouvelle adresse dans la liste.

Par contre, est-ce que l'on pourrait résoudre le problème du texte à inscrire dans le courriel par un code supplémentaire, à l'instar du code permettant d'inscrire le "Concerne" du message envoyé ??? Mais ça me paraît compliqué, avec les retours à la ligne et tout ça, non ?

Bonjour,

Je suis toujours dans l'attente de votre aide pour ce problème.

N'avez-vous vraiment pas de solution à me proposer ?

A vous relire.

4v3-4-1-totonk.xlsm (87.61 Ko)

Re,

Quel est le programme de messagerie utilisé ?

A te relire

3convert-v1-0.xlsm (50.40 Ko)

Salut Dan,

Au travail j'ai Micorsoft Outlook et à la maison Windows Live Mail. Si ça devait changer quelque chose, il faudrait plutôt que ça fonctionne avec Outlook.

Bonne journée.

Re,

En premier il faut t'assurer que l'option "Microsoft Outlook Library" est activée. Pour ce faire, vas dans l'éditeur VBA: Faire Menu / Tools / Reference puis coche la case "Microsoft Outlook Library".

Le code à mettre dans un module :

Sub SendMail_Outlook()
'Macro adaptée par Dan pour Yvouille - XL pratique le 06/05/10
'http://forum.excel-pratique.com/excel/insertion-automatique-d-adresses-electroniques-t16935.html
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim nblig  as integer, i as integer
Dim MailAd as string, Mail Ad1 as string
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
nblig = ActiveSheet.Rows.Count
For i = Range("B" & nblig).End(xlUp).Row To 2 Step -1
MailAd = Range("B" & i) & ";"
MailAd1 = MailAd & MailAd1
Next i
With olmail
.To = MailAd1
'.CC = "" 'pour le cas des copies du message à une autre liste
.Subject = "l'objet du mail"
.Body = "le texte du message"
.Attachments.Add ThisWorkbook.Path & "\" & ThisWorkbook.Name
.Display
End With
End Sub

Amicalement

Salut Dan,

Comme tu me l’as indiqué, j’ai coché l’option “Microsoft Outlook Objek Library » (voir ma copie d’écran placée directement dans le fichier Excel ci-joint), puis j’ai placé ton code dans un module.

La ligne

Dim MailAd as string, Mail Ad1 as string

est alors inscrite en rouge et si je lance quand même le code, un message d’erreur apparaît. Je n’ai pas Outlook à la maison et ne peux faire ces essais qu’au travail ; ce message apparaît alors malheureusement en allemand (voir également le fichier ci-joint) mais je pourrais le traduire approximativement par : « Erreur de compilation : Fin d’instruction attendue ».

Peux-tu encore m’aider ?

Bonnes salutations.

Re,

Oups déso Yvouille mais j'ai écrit les déclarations de variables directement dans ma réponse sur le forum.

Donc supprime l'espace en MAIL et AD1, ta ligne devient -->

Dim MailAd as string, MailAd1 as string

Amicalement

Salut Dan et merci pour cette réponse.

Ca bloque maintenant sur la ligne

nblig = ActiveSheet.Rows.Count

J'ai donc à nouveau besoin de ton aide

A tout hasard, je joins le fichier dans son état actuel.

Re,

Change cette ligne :

Dim nblig  As integer,i As Integer

par :

Dim nblig  As Long
Dim i As Integer

Attention toutefois car je crois que si tu as plus 40 adresses électronique (je n'ai pas testé), il se peut qu'Outlook ne les placent pas. Cela reviendrait à devoir modifier le code pour faire cela en plusieurs fois.

Amicalement

Salut Dan,

C'et superbe, ton code fonctionne à merveille ! Et même avec 100 adresses, tel que testé avec le fichier ci-joint.

Un tout, tout grand merci pour ton aide.

Je te souhaite une excellente journée.

Bonjour Forum, Dan, Yvouille.

Ce sujet m'intéresse mais je ne peux faire fonctionner la Macro car j'ai une erreur dès le départ.

En effet,microsoft outlook 12.0 object library est demandée et avec Excel 2003,j'ai microsoft outlook 11.0 object library refusé par la Macro.

Dan, que faudrait-il modifier pour que le code fonctionne avec microsoft outlook 11.0 object library ?

Cordialement

Re,

Amadeus, retourne dans VBA à OUTILS / REFERENCES et décoche l'option "microsoft outlook 12.0 object library" dont tu verras le mot "manquant" à droite de l'option.

Ensuite, vas rechercher et cocher l'option "microsoft outlook 11.0 object library" dans la liste.

Amicalement

Salut Dan, Amadéus, le Forum,

Et pour un programme tel que j'ai en privé, soit Windows Live Mail, y a-t-il une telle option ?

Bonne fin de journée

Bonsoir

Dan

Merci. Tout fonctionne.

Amicalement

Salut Dan,

Je me permets d'insister mais aussi d'être plus précis:

Est-ce qu'il y a la possibilité d'utiliser ton code si on possède Windows Life Mail comme messagerie ?

J'ai essayé de chercher sous Outils\Références, mais il y a une quantité d'inscriptions sous

"Microsoft Windows ..." ainsi que sous "Windows ....".

De plus, je présume que si la bonne référence existe, il faut également modifier cette ligne, non ?

 Dim ol As New Outlook.Application

Bonne fête de l'Ascension.

re,

Pour Windows live mail, la procédure n'est pas la même et ce, d'autant que ce programme ne fait pas partie de la suite Office.

Je vais tenter de te donner une réponse mais avant pourrais-tu me donner le répertoire où se trouve la messagerie --> C:\Program Files\......

Voir si tu ne trouves pas un fichier avec extension ".exe"

Sinon fais peut être un essai avec le premier code que j'ai donné et dis nous ce que cela te donne.

A te relire

Amicalement

Rechercher des sujets similaires à "insertion automatique adresses electroniques"