Gérer une récurrence de mail en code VBA

Bonjour,

Je suis actuellement en train de réaliser mon projet de fin d'étude et dans ce cadre je crée un document EXCEL permettant d'automatiser le suivi des commandes de chacun de mes collègues.

J'ai pour le moment réussi à avoir un code VBA fonctionnel pour l'envoi de mail mais je débute en code VBA et je ne parviens pas à automatiser le processus.
Est il possible de faire une récurrence tous les deux jours par exemple. Alors tous les deux jours chacun recevrait un état du nombre de lignes dont la livraison est prévue entre 0:10 jours.

Pour le moment je dois manuellement executer la macro pour que le mail parte (pour le moment display et pas send mais l'idée est la).

Voici le code que j'utilise pour le moment :

Sub EnvoiEmails2()
' Utilise la signature par défaut
Dim dos As String
Dim objOutlook As Object
Dim objMail As Object
Dim i As Long
Dim tbl As Range
Dim nb As Long
Dim mess As String
Dim signature As String

' Tableau contenant les informations client
Set tbl = Range("contacts")

' Nombre de lignes du tableau
nb = tbl.Rows.Count

' Chemin des fichiers à envoyer en pièce jointe
dos = "pièce jointe.doc"

' Création de l'objet Outlook
Set objOutlook = CreateObject("Outlook.Application")

' Boucle sur les clients à qui envoyer une facture
For i = 1 To nb

' Création de l'email
Set objMail = objOutlook.CreateItem(0)

' Afficher l'email pour que la signature automatique soit insérée
objMail.Display

' Récupérer la signature insérée par Outlook (en HTML)
signature = objMail.HTMLBody

' Construire le message personnalisé en HTML
' Construire le message personnalisé en HTML

mess = "<p>Bonjour " & tbl(i, 3) & " vous avez à ce jour " & tbl(i, 6) & " lignes de commandes dont la livraison est dans moins de 10 jours" & ",</p>" & _
"<p>Veuillez trouver ci-joint votre facture.</p>" & _
"<p>Cordialement,</p>"

With objMail
.To = tbl(i, 2) ' Adresse du destinataire
.Subject = "Etat des relances le " & tbl(i, 1) ' Sujet de l'email
' Concaténer le message personnalisé et la signature
.HTMLBody = mess & signature
' Ajout de la pièce jointe
'.Attachments.Add = "pièce jointe.doc"
' Affichage de l'email (remplacez .Display par .Send pour un envoi direct)
.Display
End With

' Libération de l'objet email
Set objMail = Nothing
Next i

' Libération de l'objet Outlook
Set objOutlook = Nothing

End Sub

edit moderation : code mis entre balises </> via le bouton de la barre de menu d'édition de message. merci d'y penser à l'avenir.

Bonjour Leobron,

Merci d'éditer votre post, si vous le pouvez avec le crayon en haut à droite de votre post
et mettez le code entre balises avec le bouton prévu à cet effet

image

Indiqué dans la charte comme règle à respecter...

Bonjour,

Excel ne peut pas directement planifier et exécuter des tâches s'il n'est pas lancé.

Ce que tu peux faire par contre c'est ajouter une feuille dans ton classeur contenant ce code et y reporter à chaque envoi de mail la date du jour (1 seule ligne de code à ajouter dans ton code ci-dessous). Ensuite tu mets dans la partie procédure événementielle à l'ouverture de ce classeur un code qui contrôle la date du jour par rapport à cette date de dernier envoi et envoie les mails si >2.

Si <2 alors les mails ne seront pas créer mais tu pourras quand même ouvrir et utiliser ton fichier (voir éventuellement lancer manuellement la procédure d'envoi de mail si pour une raison ou une autre tu ne souhaites pas attendre.

Bonjour et merci Alex pour vos réponses je vais essayer de faire des recherches vers cette piste.

Désolé de ne pas avoir mis en annotation mon code c'est mon deuxième message sur le serveur.

Bonjour à tous,

Si jamais vous pouvez ajouter un raccourci vers votre fichier Excel dans le menu startup, ainsi quand votre PC démarre (en théorie chaque jour), cela ouvre automatiquement le fichier. Il suffit de lui ajouter une petite macro de vérification de la date pour lancer (ou non) les mails.

Bonjour à tous,

Autre solution également, créer une tâche Windows dans le plannificateur, qui lance le fichier Excel tous les 2 jours

Come ça, que le PC démarre tous les jours ou non, la tâche est exécutée

bonjour Leobron, salut JExcel2FR, Saboh12617,Alex020181,

à mon avis, le problème est que le mail n'est pas envoyé tout seul, ce n'est pas le problème au niveau du plannificateur.

On peut résoudre cela éventuellement avec "Sendkeys", mais ... . Oubien sauvegarder les mails.

Salut BsAlv,

Leobron à indiqué :

Pour le moment je dois manuellement executer la macro pour que le mail parte (pour le moment display et pas send mais l'idée est la)

Pourquoi vouloir utiliser du "Sendkeys"
A l'ouverture du fichier on peut très bien lancer la procédure pour que des mails soient envoyés, il faut bien entendu modifier le code VBA pour ça

re,

d'accord JExcel2fr, je me suis trompé, désolé

Rechercher des sujets similaires à "gerer recurrence mail code vba"