Création d'une VBA permettant l'envoi d'email automatique à une date précise

Philippe Anthor

XLDnaute Nouveau
Bonjour à toutes et à tous,

Ayant fait des recherches sur différents forums dans l'optique de créer une VBA envoyant automatique un email sur la messagerie Outlook des personnes de mon entreprise quand une date précise est arrivée, mais n'ayant ni les compétences ni les connaissances nécessaires pour pouvoir finaliser ce travail, je me tourne vers vous pour, si possible, avoir un petit coup de pouce de l'un ou l'une d'entre vous.

Description : Je possède un tableau répertoriant des informations de fin de contrat qui sont sur une colonne entière de 735 lignes, et je voudrais faire en sorte qu'un mail soit envoyer automatiquement à mon directeur dès qu'un contrat arrive à 3 mois de son terme (dans l'optique de travailler en amont pour préparer s'il le faut un nouveau contrat).

La ligne/colonne correspondant à la date de fin de contrat commence en : e6 (première date) et se termine en e741 (pour la dernière).

Pourriez vous m'aider à concevoir un code VBA dans cette optique ?

Je vous remercie d'avance de tout type de réponse que vous pourrez m'apporter.
Si vous n'avez pas tout compris à ce que je viens d'écrire et que vous avez des questions, n'hésitez surtout pas à me les poser. J'essayerai d'y répondre le plus rapidement possible.

Cordialement
Philippe : Un stagiaire qui à besoin de cours de macro excel x)
 

Staple1600

XLDnaute Barbatruc
Re : Création d'une VBA permettant l'envoi d'email automatique à une date précise

Bonsoir à tous

Philippe Anthor: (Bienvenue sur le forum)
Peut-être plus de succès de réponses si tu cliques sur l'image ci-dessous ;)
NouvelleDiscuss.jpg

PS:
tu as aussi regardé les 5 liens en bas de page ?
tu as fais des recherches sur le forum avec la loupe (en haut à droite ?)
 

Pièces jointes

  • NouvelleDiscuss.jpg
    NouvelleDiscuss.jpg
    38.4 KB · Affichages: 467
  • NouvelleDiscuss.jpg
    NouvelleDiscuss.jpg
    38.4 KB · Affichages: 296

Philippe Anthor

XLDnaute Nouveau
Re : Création d'une VBA permettant l'envoi d'email automatique à une date précise

Bonjour Stapple1600,
Réponse un peu tardive de ma part mais week-end très chargé et impossible de répondre avant ce matin x)

Alors oui j'ai regardé les liens en bas de page ainsi que sur d'autres forums ... mais ne m'y connaissant pas du tout en VBA, je me suis dit que le mieux serait de demander directement un coup de main (J'ai essayé de comprendre comment ça fonctionnait mais j'y arrive pas du tout)
Après comme dit dans mon message ci-dessus, j'ai essayé de détailler le plus possible ce dont j'ai besoin. Si il y a besoin d'un fichier exemple, j'essayerai d'en créer un.
Mais donc pour répondre à ta question, c'est en ne trouvant pas ce que je cherchais sur internet que j'ai décidé de créer un post sur votre forum =).

Cordialement

Philippe Anthor
 

Staple1600

XLDnaute Barbatruc
Re : Création d'une VBA permettant l'envoi d'email automatique à une date précise

Bonsoir à tous

Philippe Anthor
Après comme dit dans mon message ci-dessus, j'ai essayé de détailler le plus possible ce dont j'ai besoin. Si il y a besoin d'un fichier exemple, j'essayerai d'en créer un.
Un petit up c'est bien

Un petit up avec un fichier exemple joint ce serait mieux, non ? ;)

PS: J'ai régardé cette discussion issue des liens des discussions similaires
https://www.excel-downloads.com/threads/envoi-automatique-demail.181023/
Il y a pas de bonnes idées à piocher, non ?

En tout cas, avec tout ceci, tu as de quoi créer un fichier exemple désormais.

A toi de jouer ;)
 
Dernière édition:

Philippe Anthor

XLDnaute Nouveau
Re : Création d'une VBA permettant l'envoi d'email automatique à une date précise

Bonjour, et merci d'avoir répondu a mon post Staple1600,

Je vous joint un fichier représentant le tableau avec les colonnes exactes (telle qu'elles le sont dans mon fichier d'origine)

Merci d'avance

Philippe Anthor
 

Pièces jointes

  • Classeur Mail Auto 2.xlsx
    11.2 KB · Affichages: 176
  • Classeur Mail Auto 2.xlsx
    11.2 KB · Affichages: 139
  • Classeur Mail Auto 2.xlsx
    11.2 KB · Affichages: 138

Staple1600

XLDnaute Barbatruc
Re : Création d'une VBA permettant l'envoi d'email automatique à une date précise

Bonsoir à tous

Philippe Anthor
Le stagiaire que tu es ne devrait pas à hésiter à mettre les mains dans le cambouis, non ?
Or ta PJ ne laisse apparaître aucun de tes essais/tâtonnements.
•Pas de code VBA que tu aurais récupéré/testé/adapté par exemple dans la discussion que je t'ai mis en lien dans mon précédent message.)
•Pas d'essai non plus de formule pour tester si la date de fin <= 3 mois
(Voici ce que tu aurais pu trouver par exemple)
=DATE(ANNEE(E10);MOIS(E10)-3;JOUR(E10))<=AUJOURDHUI()

Bref, retrousses un peu tes manches, et joint un fichier qui sente un peu plus la transpire ;)
ou attends qu'un bon samaritain fasse le boulot à ta place de A à Z ;).

PS: Tout ceci étant écrit sur un ton amical.;)
Amical mais franc et ne reflétant que ma propre opinion.
 
Dernière édition:

Philippe Anthor

XLDnaute Nouveau
Re : Création d'une VBA permettant l'envoi d'email automatique à une date précise

Bonjour Staple,

Je ne le prends pas mal ne t'inquiète pas.

J'ai mis autant que je pouvais les mains dans le camboui mais la je bloque réellement sur la mise en place des cellules dans la macro. Peux-tu m'aider ? =)

L'objectif serait :
Quand la date d'aujourd'hui = Date à 3 mois ==> Envoi d'un email automatique (Que je t'ai mis sur la page feuil1)
Et dans le mail, ce qui sera rempli par les cases doit être en équivalence avec la ligne de la date en question. Est-ce possible ?

En espérant que cela le soit
Cordialement
 

Pièces jointes

  • Classeur Mail Auto 2.xlsx
    12.7 KB · Affichages: 83
  • Classeur Mail Auto 2.xlsx
    12.7 KB · Affichages: 86
  • Classeur Mail Auto 2.xlsx
    12.7 KB · Affichages: 90

Staple1600

XLDnaute Barbatruc
Re : Création d'une VBA permettant l'envoi d'email automatique à une date précise

Bonjour à tous

Philippe Anthor
Voici pour t'encourager à continuer à mettre le nez dans le cambouis.
1) Testes le code ci-dessous dans un classeur vierge.
(NB: Ajouter des MsgBox permet de comprendre ce que fait le code VBA
C'est un bon moyen de comprendre un code VBA dont on n'est pas l'auteur ou quand on débute en VBA)
Code VBA:
Sub testerCODE()
'cette macro ne sert qu'a créer un environnement de test (donc à oublier pour la suite)
Cells.Clear
'1er test
With Range("A1")
.Value = "ITEM1"
.AutoFill Destination:=Range("A1:C1"), Type:=xlFillDefault
.Offset(1).Resize(3, 3).Formula = "=ROW()-1"
End With
Call MailAutomatique
'2nd test
Cells.Clear
Call MailAutomatique
End Sub




Code:
Private Sub MailAutomatique()
Dim Pl As Range, Action As Range, Choix(), i&
'Dim OLApplication As Outlook.Application, OLMail As Outlook.mailItem
'constitution des choix
Set Pl = Sheets("Feuil1").Range("A1").CurrentRegion
MsgBox Pl.Address
Set Action = Range(Pl(1, Pl.Columns.Count), Pl(Pl.Rows.Count, Pl.Columns.Count))
MsgBox Action.Address
MsgBox Application.WorksheetFunction.Max(Action)
For i = 2 To Pl.Rows.Count
MsgBox Pl(i, 1).Address
MsgBox Pl(i, 2).Address
ReDim Preserve Choix(1 To Application.WorksheetFunction.Max(Action))
'Debug.Print Action(i, 1)
Choix(Action(i, 1).Value) = Choix(Action(i, 1).Value) & Pl(i, 1) & " " & Pl(i, 2) & ", "
Next i
MsgBox UBound(Choix)
MsgBox Choix(1)
MsgBox Choix(2)
End Sub
DE]
Tu remarqueras que lorsque la cellule A1 est vide (le second test), on aboutit à une erreur.
Or dans ton fichier joint, la cellule A1 est vide, donc tel quel le code que tu as mis dans ta PJ, te posera problème.
Mais au moins tu as à ta disposition un exemple de code VBA (tu pourras en trouver d'autres qui reprennent plus ou moins la même syntaxe) pour envoyer un mail en VBA en utilisant Outlook.

2) Maintenant il faudrait s'attaquer à cette histoire de date en VBA avec des If (On peut se baser sur ta formule)
Petit exemple de code (A TESTER sur ton fichier joint mais en changeant la colonne E en colonne F
car j'ai ici fait le test sur la colonne E qui au départ contenait les dates de fin dans ton exemple.
NB: Pour que la macro testDATEII affiche le MsgBox "Attention à l'échéance", mettre une ou deux dates de juin 2014 par exemple dans la colonne des Dates de Fin.
Code:
Sub testDATE()
Dim DLig&, i&
DLig = Cells(Rows.Count, "E").End(3).Row
For i = 5 To DLig
MsgBox DateSerial(Year(Cells(i, "E")), Month(Cells(i, "E")) - 3, Day(Cells(i, "E")))
'ou plus simple
MsgBox DateAdd("m", -3, Cells(i, "E"))
Next
End Sub
Code:
Sub testDATEII()
Dim DLig&, i&
DLig = Cells(Rows.Count, "E").End(3).Row
For i = 5 To DLig
If Date >= DateAdd("m", -3, Cells(i, "E")) Then
MsgBox "Attention à l'échéance"
'c'est donc ic qu'on mettrait le code d'envoi de mail.
Else
MsgBox DateAdd("m", -3, Cells(i, "E"))
End If
Next
End Sub
 
Dernière édition:

Discussions similaires

Réponses
17
Affichages
1 K

Statistiques des forums

Discussions
312 219
Messages
2 086 372
Membres
103 198
dernier inscrit
CACCIATORE