Microsoft 365 VBA mail automatique date échéance

Geldo

XLDnaute Nouveau
Bonjour à tous,

Après plusieurs jours à fouiller sur le net je ne trouve pas ce que je cherche (malgré le nombre élevés de forum ouvert avec ce titre - - ' ). Pourtant j'avais déjà réussi à faire une ébauche il y a quelques mois mais impossible de remettre la main dessus...
J'ai une charge de travail assez élevée donc je cherche à gagner du temps sur quelques sujet répétitifs mais important.

Je cherche à automatiser l'envoi de mail via Outlook à partir de mon fichier Excel que j'ouvrirai une fois par semaine. Mes connaissances en VBA sont très très basses...

Dans mon fichier (je vais essayer d'être suffisamment précise mais n'hésitez pas à me dire s'il manque des info), j'ai des dates de fin de validité de formation (à partir de la colonne F ligne 3 jusqu'à la colonne AN ligne 100). J'aimerai qu'à chaque ouverture du fichier (une fois par semaine), le code balaye mon tableau et m'envoie un mail pour me dire qu'une date arrive à échéance dans moins de 45 jours et si cela est possible avec le nom de la personne concernée (colonne C de la ligne 3 à 100).

Je vous remercie tous par avance pour l'aide que vous voudrez bien m'apporter.

Hâte de vous lire :)
 

don_pets

XLDnaute Occasionnel
Hello,
Créer des envois automatiques d'émail via vba, rien de bien méchant, mais sans ton fichier on va essayer d'imaginer une solution.

Tout d'abord pour toper les mails à définir comme target, le plus simple (à mon sens) est d'incorporer à ton tableau une colonne dans la quelle tu définis si la ligne est une cible on non (avec genre une formule si( datedif(date_départ;aujourd'hui;"d")>45)

Ensuite pour le code
VB:
Set myOlApp = CreateObject("Outlook.Application")
Set myitem = myOlApp.CreateItem(olMailItem)
    With myitem
.Subject = "Tralala"
.Recipients.Add "Ton mail"
'.Attachments.Add "ToncheMin\test.txt"
.Body = "bla bla bla"

'myitem.Display
myitem.send
    End With

Ju
 

Geldo

XLDnaute Nouveau
Hello,
Créer des envois automatiques d'émail via vba, rien de bien méchant, mais sans ton fichier on va essayer d'imaginer une solution.

Tout d'abord pour toper les mails à définir comme target, le plus simple (à mon sens) est d'incorporer à ton tableau une colonne dans la quelle tu définis si la ligne est une cible on non (avec genre une formule si( datedif(date_départ;aujourd'hui;"d")>45)

Ensuite pour le code
VB:
Set myOlApp = CreateObject("Outlook.Application")
Set myitem = myOlApp.CreateItem(olMailItem)
    With myitem
.Subject = "Tralala"
.Recipients.Add "Ton mail"
'.Attachments.Add "ToncheMin\test.txt"
.Body = "bla bla bla"

'myitem.Display
myitem.send
    End With

Ju
Bonjour Ju et merci pour ton retour.

Je te joins ici un extrait de mon fichier. Toutes les colonnes y sont. Il y a bien entendu plus de ligne et un onglet supplémentaire que j'ai supprimé pour cette version partagée.

Pour le code, peux-tu mettre en vert à quoi cela correspond que je puisse apprendre en même temps et surtout comprendre comment le code fonctionne stp ? :)
 

Pièces jointes

  • COPIE Suivi des accueils - habilitations.xlsm
    24.7 KB · Affichages: 12

don_pets

XLDnaute Occasionnel
Bon entre deux réunions, voici un premier draft pour savoir déjà si nous partons dans la bonne direction.

J'ai inséré une nouvelle colonne après la colonne E. But du jeu : on regarde la première ligne, et si la différence entre la date de la colonne E et celle du jour est inf ou égale à 45 alors cela te génère un mail avec en objet le titre ta colonne E et dans le corps du texte le nom et prénom (qu'on adapte évidemment à tes envies mais cela te montre le champ des possibilités)

Regarde le code sur le module Test et modifie l'email pour mettre le tiens
 

Pièces jointes

  • COPIE Suivi des accueils - habilitations.xlsm
    27.3 KB · Affichages: 13

Geldo

XLDnaute Nouveau
Ju,

Je me suis trompée. Cela fonctionne c'est top! Un grand merci.
Je te joins un fichier de ce que j'ai compris du code car c'est important que je comprenne. Peux-tu y jeter un oeil stp ?

Maintenant comment étendre cela à tout mon tableau? Je dois insérer la colonne "PLOUF" à côté de toutes les fin de validité pour compter les jours restants j'imagine ?
 

Pièces jointes

  • Sub Tralala.docx
    13.8 KB · Affichages: 7

don_pets

XLDnaute Occasionnel
Hello,

Alors c'est comme on veut. Je pense qu'on doit pouvoir simplifier méchamment le process, mais comme tu me semblais du genre à vouloir comprendre et maîtriser pour le faire évoluer, cela me semblait être une voie intéressante.

Alors oui on peut dupliquer en insérant autant de colonnes que l'on veut et en ajoutant ces lignes à la boucle que nous avons créé. Et puis à la fin une fois que les mails sont partis, c'est comme tu veux dans ton process à toi, soit on laisse les colonnes comme elles le sont, puisque tu as reçu le mail, ou alors à la fin de la proc, on efface ce que l'on a fait de manière à relancer les mails à la prochaine exécution de la macro. As you wish. Je t'ai simplement montré certaines possibilités, maintenant on adapte à tes envies.

Je vais jeter un coup d'œil au fichier que tu viens de renvoyer

Ju
 

Geldo

XLDnaute Nouveau
OK super! Donc au moins j'ai compris le code. Maintenant comment je fais pour répéter sur autant de lignes de que personnes et sur X colonnes ?
Ton aide m'est précieuse. Encore merci :)
PS : j'ai commencé à bouquiner EXCEL VBA Guide pour débutant de Jason JAY.
 

Discussions similaires

Réponses
17
Affichages
1 K

Statistiques des forums

Discussions
312 171
Messages
2 085 931
Membres
103 049
dernier inscrit
plt