nollissuor
Messages postés7Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention 8 mars 2007
-
8 mars 2007 à 09:52
nollissuor
Messages postés7Date d'inscriptionmercredi 7 mars 2007StatutMembreDerniè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 !
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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
nollissuor
Messages postés7Date d'inscriptionmercredi 7 mars 2007StatutMembreDerniè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.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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)
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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
nollissuor
Messages postés7Date d'inscriptionmercredi 7 mars 2007StatutMembreDerniè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...
nollissuor
Messages postés7Date d'inscriptionmercredi 7 mars 2007StatutMembreDerniè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.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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)
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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]
nollissuor
Messages postés7Date d'inscriptionmercredi 7 mars 2007StatutMembreDerniè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...