Envoi mail avec les .to dans les celulles

anthooooony

XLDnaute Occasionnel
Bonjour,

J'ai dupliqué le code ci dessous 70 fois un par agence. Le corp du mail est le même pour tous.
Seulement les destinataires et les pièces joints différents.

Est il possible de faire figurer le .To en celulle? Ma demarche est la suivante, je dois diffuser un ensemble de fichiers, et on me demande de faire un recap de la liste de diffusion regulièrement.

Merci d'avance

Pour ceux que ça peut interesser, vous trouverez un code qui permet d'envoyer à qui vous le voulez un mail, plusieurs pièces jointes. L'inconvénient, qui est le sujet de mon post, est qu'il faille parametrer l'email du destinataire dans le code VBA..



Code:
Sub Macro2()

' MAIL AGENCE ALSACE 1
 Dim OutApp As Object
    Dim OutMail As Object


    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    On Error Resume Next
    With OutMail
        .to = "anthooooony@hotmail.com"
    
        '.CC = "anthooooony@hotmail.com"
       
         .Subject = "Reporting Share Agence Alsace"
                      .HTMLBody = "<font face='Calibri'>Bonjour,<br><br>Veuillez trouver ci-joint, les indicateurs Share liés à votre agence.<br><br> On appelle <b><u>automatisation share</u></b>, toute factur<br><br>" & _
        "Le reporting est composé des tableaux suivant :<br><br>" & _
        "<u><b><font color='blue'>Synthèse Share  Agence et historisation</font></b></u>: <br>" & _
        "<dd> - En montant, nombre de factures.<dd>" & _
        "<dd> - Répartition par type</dd>" & _
        "<dd> - Traitement manuel ou au</dd><br>" & _
        "<u><b><font color='blue'>Synthèse des Factures </font></b></u> :<br>" & _
        "<dd> - Vision âgée des factures en cours d'in</dd>" & _
        "<dd> - Historique mensuel du nombre/solde de </dd><br>" & _
        "<u><b><font color='blue'>Factures en instr</font></b></u> : " & _
        "<dd> - Détail, à la  ligne, des factures en cours </dd><br>" & _
        "<u><b><font color='blue'>Benchmark Ag</font></b></u> :<br>" & _
        "<dd>Classement, par pourcentage d'</dd><br>" & _
        "<br><br><br><br>Cordialement.<br><br><b></b><br> </font>"

               
       ' .Attachments.Add "N:\STAT\Rappro Share\PDF\Litiges_Alsace_(" & Format(Date, "ddmmyyyy") & ").pdf"
        .Attachments.Add "N:\STAT\Rappro Share\Rapport Share Agence Alsace NE.xlsm"
        .Send   'or use .Display
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing
end sub
 

anthooooony

XLDnaute Occasionnel
Re : Envoi mail avec les .to dans les celulles

Re bonjour,

Bon j'ai trouvé une demie solution qui est celle du publipostage. Aller dans word ci dessous le site où se trouve la procédure.
Publipostage avec Word et Excel (office)
L'inconvénient est qu'on peut pas mettre de pièce jointe pour l'instant !! je cherche toujours mais bon si quelqu'un à une solution pour le pas changer d'appli pour ce faire ce serait cool..

merci encore

anthooooony
 

david84

XLDnaute Barbatruc
Re : Envoi mail avec les .to dans les celulles

Bonjour,
a priori, si ta liste de destinataires est dans une colonne, il te suffit d'inclure ton code dans une boucle qui balayera toutes les cellules de ta colonne, quelque chose du type.
For i=1 to Nbre de destinataires
'ton code, dont .to=.cells(i,N°de colonne).value
Next i
A+
 
Dernière édition:

sousou

XLDnaute Barbatruc
Re : Envoi mail avec les .to dans les celulles

Bonsoir
Peut-être un peu hors sujet, mais tu trouveras joint un fichier te permettant d'envoyer une ou plusieurs pièces jointes à un ou plusieurs destinataires

Il suffit de choisir ses destinataires, de choisir ses pièces jointes, et de mettre des croix aux points de croisement du fichier
Développer pour outlook
 

Pièces jointes

  • Envoismessoutlook.zip
    89.7 KB · Affichages: 52

GeoTrouvePas

XLDnaute Impliqué
Re : Envoi mail avec les .to dans les celulles

Bonjour,

Pour illustrer la proposition de david84, tu peux procéder comme ceci :

Code:
Sub BoucleDestinataires()
Dim i As Long
i = 1
While ThisWorkbook.Sheets("Feuil1").Cells(i, 1) <> vbNullString
    Call Macro2(ThisWorkbook.Sheets("Feuil1").Cells(i, 1))
    i = i + 1
Wend
End Sub

Sub Macro2(Destinataire As String)

' MAIL AGENCE ALSACE 1
 Dim OutApp As Object
    Dim OutMail As Object


    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    On Error Resume Next
    With OutMail
        .to = Destinataire
    
        '.CC = Destinataire
       
         .Subject = "Reporting Share Agence Alsace"

etc..........
End Sub

Il te suffit d'entrer dans la 1ère colonne de la feuille Feuil1 la liste de tous les destinataires concernés.

Bon courage
 

DoubleZero

XLDnaute Barbatruc
Re : Envoi mail avec les .to dans les celulles

Bonjour, le Fil :), le Forum,

J'arrive après la bataille :eek:...

A bientôt :)
 

Pièces jointes

  • 00 - anthooooony - Mail Outlook x destinataires.xlsm
    42.5 KB · Affichages: 48
  • 00 - anthooooony - Mail Outlook x destinataires.xls
    68 KB · Affichages: 35
Dernière édition:

anthooooony

XLDnaute Occasionnel
Re : Envoi mail avec les .to dans les celulles

Bonjour Geotrouvepas et DoubleZero !

Merci à vous deux de vos réponses ! elle marche toutes bien !! :D

Pour finir moins bête ce soir pouvez vous me dire qu'est ce identifie le .to à la cellule 1?

Je vous dis ça parce que je souhaiterais mettre d'autres éléments (cc.subject) mais j'aimerais surtout comprendre comment faire.

Vous m'avez été d'une grande aide ! je vais pouvoir voir rapidement ma liste de diffusion sans me casser les yeux sur les multiples codes vba que j'avais fait pour l'occasion

Anthooooony
 

GeoTrouvePas

XLDnaute Impliqué
Re : Envoi mail avec les .to dans les celulles

Re,

C'est un peu difficile à expliquer comme ça.

Si tu regardes le code que je t'ai adressé, tu verras qu'il y a 2 procédures :
- Ta procédure d'origine (Macro2) que j'ai modifiée en rajoutant l'argument "Destinataire"
- Une nouvelle procédure (BoucleDestinataire) que j'ai créée pour l'occasion.

La 2ème macro passe sur toutes les cellules de la colonne 1 (jusqu'à ce qu'elle tombe sur une cellule vide) pour trouver les adresses de destinataire que tu y as saisi.
Pour chaque adresse trouvée, elle exécute Macro2 en lui donnant l'adresse qu'elle vient de trouver (cette adresse est transmis via l'argument "Destinataire").

Est ce que c'est un peu plus clair pour toi ?
 

anthooooony

XLDnaute Occasionnel
Re : Envoi mail avec les .to dans les celulles

Ça l'est un peu plus merci

Je commence à m’intéresser aux notions de VB, quand tu veux rappeler une variable normalement tu fais
calcule= 1+1

Après dans ta variable tu récupères le terme calcule c est bien ça? pour le réutiliser?
j'ai été un peu perdu parce que tu mets destinataire mais à aucun moment tu dis ou j'ai pas vu destinataire = colonne 1
ou c'est BoucleDestinataire?

Si je dois faire l'objet dans une des celulles, ou la localisation d'un fichier excel le fait crée d'autre boucle? BoucleFichierJoint BoucleSubject?

Bon désolé de t'embêter en tout cas merci pour ces explications ;)

Bonne journée!!

Anthooooony
 

GeoTrouvePas

XLDnaute Impliqué
Re : Envoi mail avec les .to dans les celulles

Je commence à m’intéresser aux notions de VB

Content de pouvoir t'aider dans ce cas


quand tu veux rappeler une variable normalement tu fais calcule= 1+1.Après dans ta variable tu récupères le terme calcule c est bien ça? pour le réutiliser?

Désolé mais je vois absolument pas de quoi tu veux parler là. Qu'entends tu par "Rappeler une variable" ? Si tu veux en savoir plus sur l'utilisation des variables, je te conseil cet excellent tutoriel à lire et à relire



j'ai été un peu perdu parce que tu mets destinataire mais à aucun moment tu dis ou j'ai pas vu destinataire = colonne 1

C'est à la ligne :
Code:
Call Macro2(ThisWorkbook.Sheets("Feuil1").Cells(i, 1))
que je lance la procédure Macro2 en lui précisant la valeur de "Destinataire"

Si je dois faire l'objet dans une des celulles, ou la localisation d'un fichier excel le fait crée d'autre boucle? BoucleFichierJoint BoucleSubject?

Tout dépend quelles sont les règles que tu dois appliquer.
Est que tu as un seul chemin possible pour chaque destinataire ? Ou y a - t - il plusieurs chemins ?
Précises un peu et je te dirais la méthode à employer.
 

anthooooony

XLDnaute Occasionnel
Re : Envoi mail avec les .to dans les celulles

Rebonjour

merci pour le tuto je l'ai sauvegardé !


Dans ce que tu n'as pas compris tu y as répondu juste en dessous En faite à la relecture je me suis aperçu que je m'étais un peu répété.
Call Macro2(ThisWorkbook.Sheets("Feuil1").Cells(i, 1))

Je n'avais pas remarqué que sur le titre de la macro2 il y a (Destinataire As String) !!!! je ne le retrouvais pas :D !!!

En faite, ce que je souhaite faire à terme, c'est mettre le .to comme vous me l'avez bien renseigné toi et doublezero, y mettre le cc, subject et un fichier joint en majorité chaque ligne à un seul chemin toujours le même. Sauf exception un utilisateur pourra avoir plusieurs fichiers mais ça je peux le faire à la main.

.To anthooooony@hotmail.com | .CC Anthoooooony@yahoo.fr | Objet : Agence Tartampion | fichier joint : C:\Agence tartampion.xlsm

Je vais voir si je peux trouver l'info sur le tuto

Merci encore

Anthooooony
 

GeoTrouvePas

XLDnaute Impliqué
Re : Envoi mail avec les .to dans les celulles

Si pour chaque destinataire, tu as une seule valeur pour .CC, un seul Objet et deux fichiers, il suffit de multiplier les arguments de la Macro2. Tu peux procéder de la sorte :

Dans ta feuille "Feuil1", tu saisi :
- Dans la colonne A : le destinataire
- Dans la colonne B : le .CC
- Dans la colonne C : l'Objet
- Dans la colonne D : le chemin du premier fichier
- Dans la colonne E : le chemin du second fichier

Tu modifies la 1ère macro comme ceci :

Code:
Sub BoucleDestinataires()
Dim i As Long
i = 1
While ThisWorkbook.Sheets("Feuil1").Cells(i, 1) <> vbNullString
    Call Macro2(ThisWorkbook.Sheets("Feuil1").Cells(i, 1), ThisWorkbook.Sheets("Feuil1").Cells(i, 2), ThisWorkbook.Sheets("Feuil1").Cells(i, 3), ThisWorkbook.Sheets("Feuil1").Cells(i, 4), ThisWorkbook.Sheets("Feuil1").Cells(i, 5))
    i = i + 1
Wend
End Sub

Code:
Sub Macro2(Destinataire As String, CC as String, Objet as String, Chemin1 as String, Chemin2 as String)
    Dim OutMail As Object

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    On Error Resume Next
    With OutMail
        .to = Destinataire
    
        .CC = CC
       
         .Subject = Objet
                      .HTMLBody = "<font face='Calibri'>Bonjour,<br><br>Veuillez trouver ci-joint, les indicateurs Share liés à votre agence.<br><br> On appelle <b><u>automatisation share</u></b>, toute factur<br><br>" & _
        "Le reporting est composé des tableaux suivant :<br><br>" & _
        "<u><b><font color='blue'>Synthèse Share  Agence et historisation</font></b></u>: <br>" & _
        "<dd> - En montant, nombre de factures.<dd>" & _
        "<dd> - Répartition par type</dd>" & _
        "<dd> - Traitement manuel ou au</dd><br>" & _
        "<u><b><font color='blue'>Synthèse des Factures </font></b></u> :<br>" & _
        "<dd> - Vision âgée des factures en cours d'in</dd>" & _
        "<dd> - Historique mensuel du nombre/solde de </dd><br>" & _
        "<u><b><font color='blue'>Factures en instr</font></b></u> : " & _
        "<dd> - Détail, à la  ligne, des factures en cours </dd><br>" & _
        "<u><b><font color='blue'>Benchmark Ag</font></b></u> :<br>" & _
        "<dd>Classement, par pourcentage d'</dd><br>" & _
        "<br><br><br><br>Cordialement.<br><br><b></b><br> </font>"

               
       ' .Attachments.Add Chemin1
        .Attachments.Add Chemin2
        .Send   'or use .Display
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing
end sub
 

Discussions similaires

Réponses
6
Affichages
308

Statistiques des forums

Discussions
312 282
Messages
2 086 765
Membres
103 389
dernier inscrit
DEDE86