VBA - Envoi d'un mail en fonction d'une date d'échéance

Bonjour à tous,

Après plusieurs visites sur les différents forums, je ne trouve aucune réponse à ma problématique. En effet, je suis un simple débutant sur excel et surtout en VBA.

Je vous explique mon problème. Je dois créer un tableau qui reprend les différents contrôles ou vérifications des installations électriques, équipements de levage, extincteurs, EPI etc.... de mon entreprise.

Je voudrais à l'approche de la futur date de contrôle diffuser un mail pré-conçu à une liste d'adresse définit. Comme vous pouvez voir sur le fichier, ci-joint, la liste des adresses mails (colonne H) pour la diffusion du message définit (colonne I). Je souhaiterai que ce message s'envoi lorsque la colonne G atteint "45 jours restants" et que cela se fasse à chaque création d'un nouveau matériel.

J'espère avoir été assez clair dans mes propos ^^

Je vous remercie par avance pour votre aide !

212classeur1.xlsx (12.15 Ko)

Bonsoir Bowser_x,

Besoin d'un petit éclaircissement sur ta phrase :

que cela se fasse à chaque création d'un nouveau matériel.

Veux-tu dire : "Le processus d'envoi de mail doit prendre en compte toute nouvelle ligne dans 'Feuil1'" ?

Bonsoir,

Oui c’est tout à fait ça. Merci pour la correction et pour ta reponse !

Bonjour Bowser_X

En P.J. une proposition de réponse à ton problème.

NB:

  • L'extension du classeur est "xlsm" pour pouvoir y stocker du code VBA.
  • Pour éviter les envois répétitifs, la colonne supplémentaire "Mail Envoyé" a été ajoutée. Elle est renseignée à "Oui" par la macro d'envoi.
  • L'object des mails (objet "Subject" dans OUTLOOK) est une constante que tu dois adapter dans le code.
  • Une session OUTLOOK doit être active sur le poste de travail.
  • Le traitement se lance automatiquement à l'ouverture du classeur.
383classeur1-gvs.xlsm (25.60 Ko)

Bonjour GVIALLES,

Merci beaucoup pour ta réponse. J'ai deux petites questions :

  • Que veux-tu dire dans : "L'extension du classeur est "xlsm" pour pouvoir y stocker du code VBA." ?
  • Aussi, dans qu'elle partie du code l'objet peut être modifié ?

Excuse moi le manque de compréhension, je veux bien comprendre tes explications et que cela soit claire dans ma tête.

Cordialement.

  • J'ai précisé l'extension 'xlsm' simplement parce que tu as fourni un classeur avec l'extension 'xlsx' qui ne permet pas de stocker des macros.
  • Pour l'objet du mail, tu dois aller dans le code VBA (alt-F11) et modifier le texte indiqué dans la constante 'cSubject' présente en début de module.

Bonjour GVIALLES,

Tout d'abord, je voudrais te remercier pour ta réponse et m’excuser pour le retard. Je suis parti en déplacement.

J'ai présenté ce tableau excel à ma hiérarchie, c'est exactement l'outils que l'on recherche.

Simplement, je vais devoir faire des modifications. Il me demande plusieurs éléments sur plusieurs feuilles excel.

Je vais commencer à le construire et je reviens vers toi pour que tu puisses m'aider sur le système d'envoi de mail.

En te remerciant,

Bowser

Bowser,

Tout à fait décidé à t'apporter l'aide nécessaire, mais STP, pas de demande trop lourde...

Bonjour GVIALLES,

Je reviens vers toi pour mon histoire de tableau ^^

Tu trouveras, ci-joint, le même tableau que la dernière fois mais modifié. En effet, j'ai ajouté plusieurs feuilles avec différents éléments à contrôler et suivre dans mon entreprise. Ce que je voudrai (ci-possible), c'est d'avoir exactement le même principe que la dernière fois, c'est à dire, un mail "alerte" qui s'envoie à des adresses définies lorsque la date de contrôle ou de changement d'un élément arrive à échéance (45jours) ,mais, pour toutes les feuilles.

De plus, il faudrait que ce procédé ce réalise sur toutes les lignes pour les futurs éléments qui vont être ajoutés.

Cette demande te parait lourde ?

Aussi, lorsque j'ai commencé à modifier la dernière pièce jointe que tu m'as transmise, que je l'ai enregistré puis ré-ouverte, un message d'erreur est apparu ... Je te laisse découvrir ceci avec la pièce jointe.

Merci pour réponse et du temps que tu passes sur mes problèmes et questions .

En te remerciant.

Bowser_x

155classeur1-gvs-2.xlsm (36.21 Ko)

Bonjour Bowser,

Une nouvelle version du classeur avec VBA passant en revue toutes les feuilles pour envoyer les mails.

292classeur2-gvs.xlsm (42.26 Ko)

Bonjour GVIALLES,

L'envois des mails ne fonctionnent que sur les deux premières feuilles de calculs (Vérification périodique / Matériels Mobiles).

En te remerciant.

Bowser.

Es-tu sûr que sur le autres feuilles, le nb de jours est <= 45?

C'est à dire ?

J'ai fait le test et le mail ne part pas à 45 jours ou même 37j ou encore 25j.

Curieux, chez-moi ça part...

A-t-on le même classeur? Sinon, peux-tu envoyer le tien?

J'ai refait le test, les mails part sur la première et la deuxième feuille mais sur toutes les autres rien ne se passent...

Tu trouveras ci-joint mon classeur.

63classeur2-gvs.xlsm (41.30 Ko)

Bonjour Bowser,

Pour que ça marche sur toutes les feuilles, il est nécessaire que toutes les feuilles soient formatées de façon identique (ce qui n'est pas le cas dans le classeur envoyé).

En particulier, la colonne contenant les "jours restants" doit toujours être en "G" comme sur les 2 premières feuilles et non en "F" ou "E" comme dans les autres feuilles. De plus, la colonne "Mail Envoyé" doit toujours être en "J"...

Bonjour GVIALLES,

J'ai commencé à modifier mon tableau en insérant les noms et éléments. J'ai fait attention de garder toujours la colonne J pour "Mail envoyé" et la colonne G pour "jours restants". Après modification, j'ai réalisé un test sur chaque feuille pour vérifier que le système fonctionne toujours.

En ouvrant le fichier, un message d’erreur est apparu : Erreur d’exécution '13' - Incompatibilité de type.

Pourtant sur la feuille 1, 2, 3 et 5 l'envoi du mail fonctionne et les trois autres non.

Etant donné que j'ai modifié ce tableau, je ne peux pas te le mettre en pièce jointe (nom du personnel).

Peux-tu m'aider ?

Cordialement.

Alors en message privée c'est possible ?

Bonjour Bowser,

Si tu veuw, je te propose de zipper le classeur en le cryptant avec mot de passe et de me transmettre le mot de passe en SMS sur le 0680407185.

GVIALLES,

Tu trouveras mon classeur joint avec le mot de passe envoyé sur le numéro.

En te remerciant.

Rechercher des sujets similaires à "vba envoi mail fonction date echeance"