Envoi mail à 2000 destinataires

HUGS

XLDnaute Nouveau
Bonjour,

J'ai ce script qui fonctionne bien pour envoyer des mails :

Sub EnvoiUnMail()
Dim MailAd As String
Dim Msg As String
Dim Subj As String
Dim URLto As String
MailAd = Range("A1")
Subj = Range("A2")
Msg = Msg & Range("A3")
URLto = "mailto:" & MailAd ' & "?subject=" & Subj & "&body=" & Msg
ActiveWorkbook.FollowHyperlink Address:=URLto
End Sub


Mon soucis c'est que je souhaiterai faire l'envoi d'un mail à "plusieurs" personnes (jusqu'à 2000) et ce script ne fonctionne pas au dessus de 20/30 emails.

Quelqu'un a -til une idée ?

Par avance merci

HUGS

(ci-joint 1 classeur exemple de mon problème ;) )
 

Pièces jointes

  • Exemple mailing.xls
    41.5 KB · Affichages: 280

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Envoi mail à 2000 destinataires

Salut à tous,

dans la pièce jointe par Hugs lors de son premier message, la cellule A4 contient 1000 adresses
lorsque je copie cette cellule et que je la colle dans Outlook (en Cc), ça marche !
je pense que l'erreur ne peut venir que du code
il m'arrive régulièrement d'envoyer des mails à plus de 80 personnes en même temps et Outlook ne m'a jamais posé de problèmes.

je continue à chercher
à+
 

HUGS

XLDnaute Nouveau
Re : Envoi mail à 2000 destinataires

En fait c'est pour envoyer des mails en intranet dans ma société et les serveurs ne nous limitent pas sur le nombre de destinataires, dans mon cas il y a uniquement le VBA qui bloque => "erreur d'éxécution 5".
Le tableau que j'essayais de constituer était un peu un créateur de liste de diffusions, modulables selon les bâtiments, titres, activités ...

Quelqu'un peut me confirmer le nombre de caratères maximum pouvant être mis dans l'édition automatique dun mail ? => 300 ? et qu'il n'ya pas moyen de contourner pour céer un mail avec 2000 destinataires ?

Merci de votre retour, ça sent le sapin pour mon idée ;( snif ...
 

chris

XLDnaute Barbatruc
Re : Envoi mail à 2000 destinataires

Re
sauf pour les spammeurs patentés ! :mad:
Ils utilisent plusieurs serveurs différents !
Il faut donc se tourner vers un logiciel tiers?
Non pas forcément mais il faut mettre une temporisation entre les envois.

Si c'est en interne et que le serveur de la société n'a pas implémenté cette procédure anti-spam, pas de souci à part la longueur maxi d'Outlook (je ne la connais pas) mais on doit peut-être avoir 256 ou 1024 caractères sur Excel.
 

chris

XLDnaute Barbatruc
Re : Envoi mail à 2000 destinataires

Re

J'ai eu le problème à résoudre mais sous Access.

J'ai opté pour un mail par destinataire d'abord pour des raisons de confidentialité car chaque destinataire n'était pas sensé voir les autres.

Je suis d'abord tombé sur la sécurité Outlook qui demandait l'accord pour chaque mail.
J'ai contourné Outlook et je n'ai découvert les problèmes de contrôle anti-spam que lorsqu'au bout de 100 envois je me suis fait jeté par mon serveur smtp.
J'ai donc épluché le Web et contacté des collègues qui font des e.mailing pour comprendre les possibilités, contraintes...
Finalement je fais une boucle pour 100 mails, une temporisation d'une heure puis reboucle....
Si d'Excel tu peux poster 2000 mails ou 400 mails sur 50 destinataires vers Outlook cela devrait marcher.

Attention aux commandes Add : il faut penser à faire un RAZ entre 2 boucles.
 

Staple1600

XLDnaute Barbatruc
Re : Envoi mail à 2000 destinataires

Re à tous


A tester

Code:
Sub TestFile()
'adapté de :http://www.rondebruin.nl/mail/folder3/message.htm
    Dim OutApp As Object
    Dim OutMail As Object
    Dim cell As Range

 Application.ScreenUpdating = False
    Set OutApp = CreateObject("Outlook.Application")
    OutApp.Session.Logon
    On Error GoTo cleanup
    'adapter la plage selon besoin
    For Each cell In Sheets("Sheet1").Range("A1:A10").Cells.SpecialCells(xlCellTypeConstants)
        If cell.Value Like "?*@?*.?*" Then
            Set OutMail = OutApp.CreateItem(0)
            On Error Resume Next
            With OutMail
                .To = cell.Value
                .Display
                '.Send 'pour envoyer
            End With
            On Error GoTo 0
            Set OutMail = Nothing
        End If
    Next cell

cleanup:
    Set OutApp = Nothing
    Application.ScreenUpdating = True
End Sub
 

HUGS

XLDnaute Nouveau
Re : Envoi mail à 2000 destinataires

PROBLEME RESOLU !!!!!! ;)

En compilant en A1 la liste de diffusion désirée (xx@xx.fr ; yy@xx.fr ; ....) et en utilisant le script suivant :

Sub TestFile()
'adapté de :Mail a message to each person in a range
Dim OutApp As Object
Dim OutMail As Object
Dim cell As Range

Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
On Error GoTo cleanup
'adapter la plage selon besoin
For Each cell In Sheets("Sheet1").Range("A1:A2").Cells.SpecialCells(xlCellTypeConstants)
If cell.Value Like "?*@?*.?*" Then
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.to = cell.Value
.Display
'.Send 'pour envoyer
End With
On Error GoTo 0
Set OutMail = Nothing
End If
Next cell

cleanup:
Set OutApp = Nothing
Application.ScreenUpdating = True
End Sub


L'envoi de "1 mail à 2000 destinataires" devient possible.

Encore merci JL

A bientôt et vive Excel !!!!!!!

HUGS
 

Pièces jointes

  • Envoi un mail à 2000 destinataires.zip
    21.2 KB · Affichages: 62

Staple1600

XLDnaute Barbatruc
Re : Envoi mail à 2000 destinataires

Re

Moi c'est JM pas JL ;)

Tant mieux si ton problème est résolu

Mais avec le code tel quel , les mails sont déposés dans la boite d'envoi non,

et pas envoyé directement

(cf .Display)

Ps: suggestion: tu peux changer le nom de la feuille poutr être plus explicite
For Each cell In Sheets("Sheet1")
remplacé par

For Each cell In Sheets("Emails") par exemple
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Envoi mail à 2000 destinataires

Re


Si tu n'utilises que la cellule A1


alors pourquoi ne pas modifier de cette façon ? (et tester)
partie du code à modifier
'/////////////////////////////////
'adapter la plage selon besoin
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.to =
Sheets("Sheet1").Range("A1").Value
.Display
'.Send 'pour envoyer
End With
On Error GoTo 0
Set OutMail = Nothing
'////////////////////////////////

Cela fonctionne t-il de cette façon ?

 

HUGS

XLDnaute Nouveau
Re : Envoi mail à 2000 destinataires

Merci pour ces compléments JM , désolé d'avoir écorché ton beau prénom ;)

=> en fait avec Range("A1") le code m'éditait 2000 mails !!!??? => je n'ai pas réussi à optimiser + le code mais en tout cas ça marche et ça me permet de terminer un gestionnaire de mails hyper finalisé.

Encore merci, sans toi j'avais aucune chance ;)

A bientôt pour de nouvelles aventures :)

HUGS
 

papypog

XLDnaute Occasionnel
Re : Envoi mail à 2000 destinataires

:) Bonjour,

Réponse non pas sur le script mais sur l'e-mailing en particulier.

A l'heure actuelle ce n'est pas le courrielleur quel qu'il soit qui va limiter le nombre de destinataires mais les serveurs de messagerie quels qu'ils soient également.
Le nombre maxi le plus répandu est de 50 mails par envoi, certains FAE étant encore plus restrictifs, limitant ce nombre à 24h00. En cas de dépassement le blocage du compte peut durer quelques heures à 24h00.

Il est donc conseillé d'utiliser des services spécialisés ; voir ICI

:)
 

Discussions similaires

Réponses
2
Affichages
303
  • Question
Microsoft 365 Macro VBA
Réponses
2
Affichages
429
Réponses
2
Affichages
142

Statistiques des forums

Discussions
312 493
Messages
2 088 957
Membres
103 990
dernier inscrit
lamiadebz