Envoi automatique de mail sous Excel

nollissuor Messages postés 7 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 8 mars 2007 - 8 mars 2007 à 09:52
nollissuor Messages postés 7 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 8 mars 2007 - 8 mars 2007 à 15:18
Bonjour,

Je n'ai pas trouvé sur le site de solution à mon problème.Voilà, j'ai un blog de recettes de cuisine que je peux actualiser par simple envoi de mails (objet du mail titre du futur post et le corps du mail texte du futur post).

J'ai également une base de donnée de recettes (plusieurs dizaines de milliers) qui m'interdit de publier les posts manuellement (j'en aurait pour plusieurs années à plein temps !)

Ce que j'aimerais c'est donc que sous excel, un programme envoie automatiquement (à intervalle régulier : toutes les 5 min. ou tous les quart d'heures...) des mails chez mon herbergeur pour actualiser mon mail.



L'adresse d'envoi serait toujours la même, mais l'objet et le corps du mail changeraient à chaque fois.


Imaginons que les titres des recettes soient en Colonne A et que les textes des recettes soient en Colonne B, le premier mail aurait pour objet le texte du titre contenu en A1 et pour corps, le texte de la recette contenu en B1.
Le deuxième mail (5 min. après) aurait pour objet le texte contenu en A2 et pour corps, le texte contenu en B2... Et ainsi de suite jusqu'au 500e mail (je souhaite en envoyer au moins 500 par jour), avec pour objet le texte contenu en A500 et pour corps le texte contenu en B500.

Si quelqu'un peut m'aider en réalisant pour moi le doc sous excel que je n'aurais plus qu'à télécharger... ça serait trop cool. Je le remercierais en lui adressant... un bouquin de cuisine !

14 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 mars 2007 à 10:11
Salut,

Faux départ: "Si quelqu'un peut m'aider en réalisant pour moi le doc sous excel"
Et oui nous ne sommes pas là pour ca. De plus ton Xls existe déjà non , donc ce que tu souhaites c'est une macro?

Si tu veux envoyer des Mails, veux tu le faire via des objet Outlook?

Comment veux tu envoyer 500 mail par jour toute les 5 Minutes (2500 minutes) .... alors qu'il n'y a que (24 * 60) 1440 minutes dans une journee...

Bref, il faut être plus précis. As tu déjà commencer un petit bout de code..
@+: Ju£i?n
Pensez: Réponse acceptée
0
nollissuor Messages postés 7 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 8 mars 2007
8 mars 2007 à 10:58
Merci de toutes ces précisions, et notamment du fait qu'il n'y a que 1440 minutes dans une journée...

En fait oui, ça fait une semaine que j'essaie de m'en sortir avec des bouts de codes, glanés ici ou là. Quand j'ai l'impression d'avoir pigé un truc et que j'essaie concrêtement de passer à la phase programmation, rien ne fonctionne.

Du coup j'en appelle à la bonne volonté de ceux qui savent...

Et en effet, c'est d'une macro dont j'ai besoin, quand à l'application pour envoyer des mails, ce serait Outlook Express.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 mars 2007 à 11:05
Salut,

Lorsque tu es dans l'éditeur VBA, et que tu fais Outils => Références, possèdes tu la référence suivante: Microsoft Oultook 9.0 Object Library (9.0 ou autre chiffre)

@+: Ju£i?n
Pensez: Réponse acceptée
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 mars 2007 à 11:18
Re,
Si tu la possède tu peux essayer de placer ce code dans un Module:

Private OutApp As Outlook.Application
Private ObjMail As MailItem

Public Sub SendNewMail()
Static NumLigne As Long
   'Incrémente le numéro de ligne
   NumLigne = NumLigne + 1
   'Créer Outlook si nécessaire
   If OutApp Is Nothing Then Set OutApp = New Outlook.Application
   'Creation d'un objet Mail
   Set ObjMail = OutApp.CreateItem(olMailItem)
   'remplssage des info
   With ObjMail
       'Destination
       .To = "blabla@yahoo.fr"
       'Sujet => le titre de la recette
       .Subject = ActiveWorkbook.Worksheets(1).Range("A" & NumLigne).Value
       'Corps => la recette
       .Body = ActiveWorkbook.Worksheets(1).Range("B" & NumLigne).Value
       'Envoi du mail
       .Send
   End With
   'Destruciton de l'objet Mail
   Set ObjMail = Nothing
End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]
Ce code envoi un nouveau Mail (il incrémente la ligne seul)
NOTE: Les recette se trouvent dans la feuille 1

@+: Ju£i?n
Pensez: Réponse acceptée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nollissuor Messages postés 7 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 8 mars 2007
8 mars 2007 à 11:46
Julien,
Merci pour tes réponses rapides. J'ai installé la macro, mais j'ai un message intitulé : "Erreur de compilation, Type défini par l'utilisateur non défini"

Avec ça : OutApp As Outlook.Application, surigné en bleu...

C'est grave docteur ?

T.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 mars 2007 à 11:48
Il faut te référerer à mon poste précédent et cocher la référence sité (si tu l'as )

@+: Ju£i?n
Pensez: Réponse acceptée
0
nollissuor Messages postés 7 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 8 mars 2007
8 mars 2007 à 12:18
Julien,

Merci pour ta patience et tes qualités pédagogiques. Cette fois, en effet, il n'y a plus de message. En revanche, quand je lance la macro, rien ne se passe, mais le programme se bloque, comme si la macro travaillait dans le vide...

C'était un peu ce que craignais (je suis trop nul) et c'est un peu pour ça que je demandais la possibilité (si, si, j'insiste) de télécharger le doc excel juste avec 3 items par colonne... Du genre :

A                     B
Titre1               Texte1
Titre2               Texte2
Titre3               Texte3

Comme ça je serai sûr que ça marche...


Tu penses que tu peux faire ça ? Par ailleurs, je ne plaisante pas à propos du bouquin. J'en ai un de Cyril Lignac. Si ça peut te faire plaisir, envoies moi ton adresse ici : nollyshuor[at]gmail.com.


D'avance, merci à toi...
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 mars 2007 à 13:46
Re,
J'avais même pas vu que tu proposais des pots de vin

J'ai testé mon code et il fonctionne.
Envoie moi ton classeur, en expliquant bien ce que tu veux à epsylon9@gmail.com et j'essaierais de voir ce que je peux fair e(mais pas la peine pour le livre)

@+: Ju£i?n
Pensez: Réponse acceptée
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 mars 2007 à 14:11
Salut,

Est ce que je peux faire un test (tu risques de recevoir des mails aussi => je vais fair eun test avec 10 pour l'instant si tu me le permet)

@+: Ju£i?n
Pensez: Réponse acceptée
0
nollissuor Messages postés 7 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 8 mars 2007
8 mars 2007 à 14:14
OK, pas de problème.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 mars 2007 à 14:38
Re,
Je viens de faire un test en t'en envoyant 5
j'attend que tu me le confirme

@+: Ju£i?n
Pensez: Réponse acceptée
0
nollissuor Messages postés 7 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 8 mars 2007
8 mars 2007 à 14:41
Julien : ça maaaaaaaaaarche ! C'est bon : je les ai reçues !!! Thanks
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 mars 2007 à 14:52
Re,
Tant mieux,
Alors pour terminer voyons le coté Timer, tu veux que cela les envoie tout les combien?
Car moi la j'ai fait un timer tout les 5 secondes mais peu etre que tu veux moins fréquement.
Voici donc le code qui fonctionne. Il faut le mettre dans un MODULE.
Dim Lheure As Double
Dim Interval As Integer
Private OutApp As Outlook.Application
Private ObjMail As MailItem

Sub LancerTimer(NbS As Integer)
'L'application ExecutionTimer se lancera toutes les 0 heure, 0 minute et Interval seconde
  Interval = NbS
  Call Application.OnTime(Now + TimeSerial(0, 0, Interval), "SendNewMail")
End Sub<hr />
Sub ArretTimer()
  On Error Resume Next
  Call Application.OnTime(Lheure, "SendNewMail", , False)
End Sub<hr />

Public Sub SendNewMail()
Static NumLigne As Long
   'Incrémente le numéro de ligne
   NumLigne = NumLigne + 1
   'Créer Outlook si nécessaire
   If OutApp Is Nothing Then Set OutApp = New Outlook.Application
   'Creation d'un objet Mail
   Set ObjMail = OutApp.CreateItem(olMailItem)
   'remplssage des info
   With ObjMail
       'Destination
       .To = "nollyshuor@gmail.com"
       'Sujet => le titre de la recette
       .Subject = ActiveWorkbook.Worksheets(1).Range("A" & NumLigne).Value
       'Corps => la recette
       .Body = ActiveWorkbook.Worksheets(1).Range("B" & NumLigne).Value
       'Envoi du mail
       .Send
   End With
   'Destruciton de l'objet Mail
   Set ObjMail = Nothing
   'Actionne la prochaine (Timer)
   If NumLigne < 10 Then 'remplacer le 10 par le nombre de recette souhaitées.
       Lheure = Now + TimeSerial(0, 0, Interval)
       Call Application.OnTime(Lheure, "SendNewMail")
   Else
       Call ArretTimer
   End If
End Sub , ----
[code.aspx?ID=41455 By Renfield]
Il te suffit de mettre un bouton sur ta feuille ou il y a les recettes et de mettre le code suivant correspondant à l'événement click du bouton (ATTENTION ce code n'est pas a mettre dans le module mais dans le code de la feuille possédant le bouton et donc les recettes

Private Sub CommandButton1_Click()
Call LancerTimer(5) '5 correspond à 5 secondes
End Sub<hr />
, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
0
nollissuor Messages postés 7 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 8 mars 2007
8 mars 2007 à 15:18
Hum, désolé : c'est encore le chieur...

J'ai fait comme tu as dit (enfin je crois), mais voici le message que j'obtiens quelques secondes après avoir cliquer sur le bouton et lancer la macro...

"Microsoft Excel attend la fin de l'exécution d'une action OLE d'une autre application"

Je n'ai absolument aucune idée de ce que ça signifie...

Dommage, j'ai l'impression qu'on y est presque...
0
Rejoignez-nous