Excel peut-il, à intervalles réguliers, envoyer automatiquement un mail?

Aloha

XLDnaute Accro
Bonjour,

Je voudrais communiquer, à des intervalles réguliers (p.ex. tous les lundis à 7:00), le contenu d'une cellule définie, à plusieurs personnes, par mail.

Excel, est-il capable d'envoyer automatiquement un mail avec le chiffre contenu dans cette cellule, à des adresses mail spécifiées?
sous condition évidemment que le programme soit ouvert.

Merci pour toute réponse

Aloha
 

job75

XLDnaute Barbatruc
Re : Excel peut-il, à intervalles réguliers, envoyer automatiquement un mail?

Bonjour aloha,

Vous construisez une macro dans un Module, appelons la Envoi qui envoie les mails.

Pour cela il y a de multiples exemples sur le forum.

Ensuite il suffit d'y rajouter Application.OnTime au début :

Code:
Sub Envoi()
Application.OnTime Now + TimeValue("1:0:0"), "Envoi" 'délai 1 heure
'suite du code
End Sub

Edit : si le délai (format heure) a été mis dans la cellule A1, bien sûr on peut écrire :

Application.OnTime Now + Sheets("Feuil1").Range("A1"), "Envoi"

A+
 
Dernière édition:

Aloha

XLDnaute Accro
Re : Excel peut-il, à intervalles réguliers, envoyer automatiquement un mail?

Bonjour,

Merci pour la réponse.

Je ne comprends pas vraiment comment procéder dans la pratique.
Voilà pourquoi je joins un fichier exemple.

A+

Aloha
 

Pièces jointes

  • Envoyer chiffre par mail.xls
    10.5 KB · Affichages: 135

job75

XLDnaute Barbatruc
Re : Excel peut-il, à intervalles réguliers, envoyer automatiquement un mail?

Re,

Toujours pas trouvé Aloha ?

Alors essayez cette macro sur votre fichier :

Code:
Sub Envoi()
Dim Adresse As String, Objet As String, Text As String
Application.OnTime Now + TimeValue("1:0:0"), "Envoi" 'envoie toutes les heures
Adresse = "xyz@hotmail.com;abc@gmail.com" 'à adapter
Objet = "Ventes"
Text = "Le total des ventes est : " & Sheets("Ventes").Range("B6")
SendKeys "{TAB 3}{DEL}{TAB}" & Text & "%f{Down}~%{F4}" 'la touche {DEL} supprime la pièce jointe
Application.Dialogs(xlDialogSendMail).Show Adresse, Objet
End Sub

Comme vous le voyez, le document de votre messagerie est piloté par l'envoi de touches.

A+
 
Dernière édition:

Aloha

XLDnaute Accro
Re : Excel peut-il, à intervalles réguliers, envoyer automatiquement un mail?

J'ai essayé,

En démarrant la macro, j'atterris dans une fenêtre Outlook avec, dans le texte, le chiffre qui doit être transmis, et en annexe le fichier contenant le chiffre.

Ce fichier ne doit pas être joint. La touche "DEL" le supprime donc, mais il n'est pas nécessaire qu'il soit joint.

Puis, il ne faut pas envoyer toutes les heures mais 1 fois par semaine.

Je ne vois où et comment changer la macro pour y apporter ces modifications dans l'exécution.

Si je comprends bien la procédure est semi-automatique: dans Outlook il faut appuyer sur "Envoyer". Cet click, ne peut-il pas être exécuté automatiquement?

A+

Aloha
 

job75

XLDnaute Barbatruc
Re : Excel peut-il, à intervalles réguliers, envoyer automatiquement un mail?

Re,

Il m'étonnerait fort que vous laissiez toujours votre fichier ouvert pendant plusieurs semaines !

Vous pouvez programmer l'ouverture automatique du fichier une fois par semaine par le "Planificateur de tâches" de Windows.

Mais alors je pense qu'il vaut mieux lancer la macro manuellement.

Quant aux touches de pilotage, je les ai programmées sur ma messagerie Outlook Express, je n'ai besoin d'appuyer sur aucune touche...

Je vais regarder avec ma version Outlook.

A+
 

Aloha

XLDnaute Accro
Re : Excel peut-il, à intervalles réguliers, envoyer automatiquement un mail?

Re,

Il m'étonnerait fort que vous laissiez toujours votre fichier ouvert pendant plusieurs semaines !

Excusez, je ne comprends pas pourquoi vous dites cela!

S'il y avait là derrière comme un malentendu, ça ne m'étonnerait pas.

Je veux donc uniquement transmettre ce fameux chiffre, et cela depuis un fichier que j'aurais ouvert auparavant!
Voilà pourquoi je ne comprends pas pour quelle raison le fichier devrait être annexé.

Vous pouvez programmer l'ouverture automatique du fichier une fois par semaine par le "Planificateur de tâches" de Windows.

Ce serait bien pratique, mais comment le faire? Mes capacités informatiques sont limitées!

Et puis la macro devrait donc s'exécuter d'elle-même.

A+

Aloha
 

job75

XLDnaute Barbatruc
Re : Excel peut-il, à intervalles réguliers, envoyer automatiquement un mail?

Re,

Excusez, je ne comprends pas pourquoi vous dites cela!

Au lieu de "fichier toujours ouvert" j'aurais dû dire "Excel toujours ouvert".

Si l'on ferme Excel, l'heure qu'a déterminée Application.OnTime n'existe plus.

J'ai vérifié avec Outlook, ça ne change rien pour moi.

Je suis sur Excel 2003, vous avez peut-être une autre version.

Il faut que vous regardiez quelles touches sont nécessaires chez vous pour envoyer le mail à partir de votre messagerie, ensuite adaptez la macro.

A+
 

job75

XLDnaute Barbatruc
Re : Excel peut-il, à intervalles réguliers, envoyer automatiquement un mail?

Re,

Essayez donc cette nouvelle version.

La macro envoie les touches Alt+S sur la messagerie pour envoyer le message :

Code:
Sub Envoi()
Dim Adresse As String, Objet As String, Text As String
Application.OnTime Now + TimeValue("1:0:0"), "Envoi" 'envoie toutes les heures
Adresse = "xyz@hotmail.com;abc@gmail.com" 'à adapter
Objet = "Ventes"
Text = "Le total des ventes est : " & Sheets("Ventes").Range("B6")
SendKeys "{TAB 3}{DEL}{TAB}" & Text & "[COLOR="Red"]%s[/COLOR]%{F4}" 'la touche {DEL} supprime la pièce jointe
Application.Dialogs(xlDialogSendMail).Show Adresse, Objet
End Sub

A+
 

Aloha

XLDnaute Accro
Re : Excel peut-il, à intervalles réguliers, envoyer automatiquement un mail?

Re,

Je suis également sous Excel 2003.

J'ai compris le problème avec l'heure qui n'existe plus quand Excel est fermé, mais ne peut-on pas lui dire qu'il l'envoie tous les lundis à 9 heures, et, si le programme ou le fichier n'est pas ouvert à cette heure, que le mail soit envoyé dès l'ouverture du fichier?

La combinaison de touches pour envoyer un mail dans mon Outlook est ALT+V.

Malheureusement je ne comprends pas la définition des touches dans le code.

La nouvelle macro se bloque à la ligne "Application.Dialogs..." à cause d'un "problème général" d'Outlook que j'ai redémarré mais qui est maintenant en mode "Hors connexion" et je ne trouve pas comment changer cela.

A+ Aloha
 

Habitude

XLDnaute Accro
Re : Excel peut-il, à intervalles réguliers, envoyer automatiquement un mail?

je te conseil de créer un VBScript. (*.vbs)
Dans lequel tu lance l'exécution d'un mail

Tu programme son démarrage à partir d'une tâche planifiée

Menu Démarrer
Accessoires->Outils systèmes -> Tâches planifiées
 

MJ13

XLDnaute Barbatruc
Re : Excel peut-il, à intervalles réguliers, envoyer automatiquement un mail?

Bonjour à tous

Comme dirait Job (Eh! 6000 posts ;)) ou habitude, les tâches planifiés dans l'explorateur, c'est fait pour cela.

Je l'utilise tous les jours pour récupérer des données de centrales de mesures. L'intérêt est qu'Excel s'ouvre, accompli les tâches demandées et se referme tout seul.

Mais il faudra que le PC soit allumé avant de lancer la tâche.
 

job75

XLDnaute Barbatruc
Re : Excel peut-il, à intervalles réguliers, envoyer automatiquement un mail?

Re Aloha, salut habitude, Michel,

Aloha, vous trouverez le fichier ci-joint adapté à ce que vous avez indiqué.

Les macros sont dans 2 feuilles VBA (Alt+F11) :

1) dans ThisWorkbook :

Code:
Private Sub Workbook_Open() 'se déclenche à l'ouverture du fichier
If Now < Sheets("Ventes").Range("G6") Then ProgrammerDate Else Envoi
Me.Saved = True 'évite le message à la fermeture
End Sub

2) dans Module1 :

Code:
Sub ProgrammerDate() 'programme l'envoi pour le lundi suivant à 09:00
Dim test As Boolean, dat As Date
test = Weekday(Date, 2) = 1 And Time < TimeValue("9:0")
dat = Date + IIf(test, 0, 8 - Weekday(Date, 2)) + TimeValue("9:0")
Sheets("Ventes").Range("G6") = dat
Application.OnTime dat, "Envoi" 'programme l'envoi différé
End Sub

Sub Envoi() 'envoi le message
Dim Adresse As String, Objet As String, Text As String
Adresse = "xyz@hotmail.com;abc@gmail.com" 'à adapter
Objet = "Ventes"
Text = "Le total des ventes est : " & Sheets("Ventes").Range("B6")
SendKeys "{TAB 3}{DEL}{TAB}" & Text & "[COLOR="Red"]%v[/COLOR]%{F4}" 'la touche {DEL} supprime la pièce jointe
Application.Dialogs(xlDialogSendMail).Show Adresse, Objet
ProgrammerDate 'programme une nouvelle date
End Sub

Dans la dernière macro j'ai mis en rouge les touches de raccourci Alt+V que vous avez indiquées.

Normalement tout doit fonctionner automatiquement, il n'y a rien à faire.

A+
 

Pièces jointes

  • Envoyer chiffre par mail(1).zip
    14.5 KB · Affichages: 106
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 147
Messages
2 085 765
Membres
102 968
dernier inscrit
Tmarti