Envoi mail automatique Excel via outlook selon la date du jour

Bonjour à tous,

Je me suis aidée du forum pour construire une macro pour envoyer un mail automatiquement via outlook 2013 lorsque la date du jour est effective. (sujet :

https://forum.excel-pratique.com/excel/code-vba-pour-envoi-de-mail-automatique-en-fonction-de-la-dat...)

Je pense être sur la bonne piste mais j'ai cette erreur lorsque je veux lancer la macro :

image

Sur la macro j'ai mis des annotations de choses à insérer que je ne sais pas faire...

J'aimerai :

  • Rajouter le nom de la personne à qui j’envoie le mail après Salut (colonne I)
  • Rajouter le nom de la personne concerné par l'envoi du mail (colonne A)
  • Insérer ma signature outlook dans le corps du mail (à moins que ça le fasse automatiquement via outlook ?)
  • Prévoir un envoi automatique à l'ouverture du fichier mais 1 seul fois par jour (j'ouvre et je ferme le fichier toute la journée)

Je n'ai pas compris ce que voulais dire lastrow, ni le _ après .Body

Est-ce qu'un âme charitable pourrait m'aider ?

Merci la communauté

Bonjour,

Ajouter la bibliothèque Microsoft Outlook dans l'éditeur Visual Basic :

menu Outils --> Références --> cocher Microsoft Outlook 15.0 Object Library

Merci Thev

Maintenant j'ai cette erreur

image

Bonsoir,

Vous avez un tableau structuré, le plus simple est alors d'utiliser le code qui lui est associé. Voir mon tuto : https://forum.excel-pratique.com/astuces/tableau-structure-instructions-vba-specifiques-a-cet-objet-...

Pour l'ajout de la signature (si elle comporte une image), le message doit être rédigé en HTML. Ci-joint votre fichier corrigé

Merci thev pour ta précieuse aide

Je ne trouve pas ou mettre enlever le gras de "Salut + nom" sinon ça fonctionne

image

Mais j'ai ce message à chaque fois que le lance la macro

image

et comment faire pour que ça soit automatique à la première ouverture du classeur?

Je pensais avoir trouvé une solution mais non finalement.

J'ai rajouté cette macro en dessous de l'autre

Private Sub Envoi_une_seule_fois()
Application.OnTime TimeValue("16:54"), "Workbook_Open"
End Sub

seulement il me renvoi l'erreur

image

J'ai voulu contourner le problème et créer un bouton pour envoyer les mails mais il me renvoi cette erreur :

image

Bonsoir,

Il suffit de mettre cette instruction dans la procédure événementielle Workbook_Open de ThisWorkbook :

Private Sub Workbook_Open()
    Feuil1.EnvoiMail
End Sub

ci-joint classeur modifié

Bonjour Thev,

Cela n'a rien changé j'ai toujours l'erreur d’exécution 13.

Et lorsque je réouvre le classeur il renvoi à nouveau le mail

Merci d'avance pour ton aide

Cela n'a rien changé j'ai toujours l'erreur d’exécution 13.

Vous avez cette erreur car votre colonne Date_envoi ne contient pas que des dates. Il faut donc en tenir compte dans le code.

ci-jointe version adaptée

J'ai toujours la même erreur, je dois mal faire quelque chose.

Voici mon fichier, peux-tu regarder stp ?

Quand je fais le débogage, il me pointe vers ici :

image

Bonjour,

1- Vous avez dans votre tableau des formules qui renvoie une erreur : #N/A. Il faut gérer cette erreur dans vos formules.

2- un tableau structuré ne doit pas comporter de lignes vides. Elles doivent être supprimées

ci-joint votre fichier avec votre tableau structuré corrigé

Merci beaucoup, ça fonctionne et au passage j'ai appris des nouvelles choses.

Maintenant j’essaie de lancer la macro une fois par jour via le planificateur de tâche et un script mais il y a blocage.

Je me suis inspirée de ce fil : https://forum.excel-pratique.com/excel/executer-un-script-via-planificateur-de-tache-164066

J'ai presque réussi. L'action du planificateur se lance bien à l'heure demandée, il lance bien le fichier mais pas la macro. Je ne sais pas à quel endroit lui dire de la lancer, je pensais que c'était ici :

ApplicationExcel.Run "Envoi_mail"

mais rien ne se passe

Voici le script :

Option Explicit
On Error Resume Next
TacheExcel

Sub TacheExcel()

Dim ApplicationExcel
Dim ClasseurExcel

Set ApplicationExcel = CreateObject("Excel.Application") 
Set ClasseurExcel = ApplicationExcel.Workbooks.Open("C:\Users\04250-G2\Documents\Suivi_PE_TEST_moi.xlsm") 

ApplicationExcel.Visible = True   'les actions seront visibles. Pour tout lancer en arrière-plan, remplacer True par False
ApplicationExcel.Run "Envoi_mail" 'va lancer la macro
ApplicationExcel.Quit

Set ClasseurExcel = Nothing 
Set ApplicationExcel = Nothing 

End Sub

Mon script est bien en .vbs. J'ai d'abord mis le code dans un txt et changer l'extension.

J'ai enlevé la macro dans workbook_open (je ne veux pas qu'elle se lance dès que j'ouvre le fichier, vu que je l'ouvre plusieurs fois par jour), peut être que ça vient de ça ?

J'ai trouvé grâce à ce post sur developpez.net: (je ne peux pas mettre de lien...)

Il suffisait de lui dire que la macro se trouve dans la feuille 1 et de bien mettre le chemin dans les '

voici le script corrigé :

Option Explicit
On Error Resume Next
TacheExcel

Sub TacheExcel()

Dim ApplicationExcel
Dim ClasseurExcel

Set ApplicationExcel = CreateObject("Excel.Application")
Set ClasseurExcel = ApplicationExcel.Workbooks.Open("C:\Users\04250-G2\Documents\Suivi_PE_TEST_moi.xlsm") 'ouvre excel

ApplicationExcel.Visible = True 'les actions seront visibles. Pour tout lancer en arrière-plan, remplacer True par False
ApplicationExcel.Run "'C:\Users\04250-G2\Documents\Suivi_PE_TEST_moi.xlsm'!Feuil1.Envoi_mail" 'va lancer la macro
' ApplicationExcel.Quit 'pour quitter excel

Set ClasseurExcel = Nothing
Set ApplicationExcel = Nothing

End Sub

Merci beaucoup thev pour ton aide. Au plaisir

Je passe en résolu (edit : je ne peux pas le faire sur un de mes posts ^^)

Bonne journée

Bonjour à tous,

Je reviens ici avec un petit souci. Lorsque l'action via le planificateur s'effectue, elle fait la tâche à moitié.

Par exemple aujourd'hui : j'avais 3 envoi et le script n'en a envoyé qu'1, le premier dans la la liste du tableau qu'il a rencontré

Lorsque je lance la macro manuellement, les 3 mails s'envoient bien.

Quelqu'un aurait une idée ?

Bonjour à ceux qui passe par la, Thev,

Avec de l'aide j'ai réussi à trouver le problème.

J'ai mis ma macro dans un module et non la feuil1 et j'ai pointer le module sur le code du script.

Rechercher des sujets similaires à "envoi mail automatique via outlook date jour"