Envoi de mail automatique

Bonjour a tous , j'espère que vous allez bien !

Je remercie tout d'abord tout ceux qui m'on aider sur les post pour mon application elle fonctionne bien !

je me demande néanmoins si je peux rajouter une fonctionnalité qui me semble complexe et je ne sais pas si cela est possible , je m'explique :

sur mon userform on a une page d'accueil avec un compteur de commande livrée , partielle ou non livrée pour chaque site de livraison et je me demandais si était possible de faire en sorte que tout les lundi on puisse envoyer ces informations par mail automatiquement.

Merci d'avance a tout ceux qui prendront la peine de lire ou même de me dire si cela est possible ou non , n'hésité surtout pas a me dire si je ne suis pas assez précis ou si vous ne comprenné pas quelques chose sur l'application

cllmt Nathan

UP

Bonjour,

Concernant ta problématique je vérifierais si on a envoyé un mail automatique depuis le dernier lundi, le test VBA ressemblerait à:

If Date - Weekday(Date, vbMonday) + 1 > Range("a1") Then
    Range("a1") = Date
    'envoi auto
End If

Le principe:

  1. pas besoin de convertir Date en entier pour retirer les heures, c'est déjà un entier qui ne les contient pas
  2. on convertis la date actuelle en la date du lundi de la semaine en cours, pour ça on utilise Weekday qui renvoie le numéro du jour en cours avec une semaine qui commence par Lundi, pour mercredi ça renvoie 3, mais comme on veut juste décaler de 2 jours on ajoute 1
  3. on teste si la date du lundi de la semaine est strictement supérieure à celle du dernier jour où l'envoi automatique a été effectué
  4. si c'est bien un nouveau lundi, alors on affecte tout d'abord à la cellule mémoire la nouvelle date à laquelle l'envoi est fait, puis on passe à l'envoi automatique

C'est donc bien faisable, il faut faire le test dont j'ai parlé et stocké la date du dernier envoi auto quelque part dans le classeur, pour l'envoi automatique il faudra aller chercher les informations dans le fichier et hop, le tour sera joué.

D'accord je te remercie pour cette piste intéressante !

bonjour a tous je me permet des relancer ce sujet car cela m'a l'air compliqué donc je réexplique :

j'aimerais que si on est lundi l'application envoit un mail via outlook automatique dans ce mail je ne sais pas si c'est possible mais j'aimerais qu'il envoit une capture d'écran de l'onglet accueil de mon userform . S'il vous faut un fichier actualisé de l'application je peut vous donner cela en DM

cordialement Nathan

Salut Nathan, Salut Ausecour,

Ici, tu as un exemple pour envoyer des mails Outlook depuis Excel :

https://forum.excel-pratique.com/astuces/vba-excel-outlook-envoi-mail-29003

Il est assez bien clair.

Je pense que tu devrais commencer à adapter le code à ton problème puis, si tu n'obtiens pas de réponse, reposer la question pour la capture d'écran qui est un cas "particulier" (mais peut-être traité sur le fil du lien).

Donc il faut bien préparer le code de l'envoi de mail, qu'il faut placer dans un module standard. Puis placer le code d'Ausecour dans le module ThisWorkbook, dans la procédure Open et y appeler la macro envoimail.

Cdlt,

oui merci oui je comptais bien évidement utilisé le code de ausecour je vais essayer d'adapter le code alors je vous tiens au courant !

Ca marche ! A très vite !

Bon le problème maintenant est de savoir comment récupérer les informations voulut je pensais a une capture d'écran de l'userform mais je ne sais pas comment m'y prendre a moins que quelqu'un ai une autre idée je suis preneur

Bonjour,

la capture d'écran est un sujet très compliqué j'ai l'impression, il y a de nombreux sujets sur différents forums mais je dois avouer ne pas tout comprendre, il faut apparemment simuler l'appui sur des touches pour faire appel à une capture d'écran en croisant les doigts pour que ça marche... Je ne sais pas trop comment on pourrait s'en sortir, je laisse la main à des personnes qui s'y connaitront plus sur ce sujet

ah d'accord apres je ne suis pas buté sur la méthode je ne souhaite pas forcement une capture d'écran si il a un moyen de récupérer les nombres inscrit dans les textbox pour faire un mail du type :" commande livrées pour le site LH" (le nombre inscrit dans la texbox) je suis ouvert a chaque idée

Moi aussi, je me dis qu'il y a peut-être mieux à jouer...

Est-ce que tu peux joindre un fichier où il faut impérativement envoyer la données dans le corps du mail ?

En tout cas, je me dis que tu peux filtrer ta BDD, contrôler ta zone d'impression, exporter en pdf, joindre le fichier et remttre tout en état.

pas de soucis je m'occupe de rendre anonyme mon fichier et je vous l'envoie

voila le fichier :

De ce que je vois, les personnes que l'on va contacter ce sont les fournisseurs, à partir des informations présentes dans BDD2 c'est bien ça?

Quelles seront les conditions pour les contacter? les relancer si un envoi est en retard? quel format aimerais tu prendre? décomposer par site ce qu'ils doivent envoyer?

Tu avais précisé que tu aimerais faire un envoi chaque lundi, c'est pour leur envoyer sur la semaine les livraisons qu'ils vont devoir faire?

excuse moi j'ai du mal expliqué enfaite non c'est le contraire cela sert a l'entreprise a gérer ces commandes et donc chaque lundi faire un point sur les commandes qu'elle a reçût ou non de chaque site, cela sert a envoyer au service qui s'occupe des commandes de savoir ou on en est a la manière de l'onglet accueil de l'userform ou l'on sait pour chaque site le nombre de commandes livrées totalement , partiellement ou non livrées . J'espère avoir été clair cette fois si

Oh ok!

Donc si on leur envoie un tableau avec exactement les mêmes infos que la page d'accueil tout est ok, donc une seul adresse mail à envoyer! je vois je vois, pour ne pas tout reprendre de zéro je propose de réutiliser un code que j'avais fait sur un vieux sujet: https://forum.excel-pratique.com/excel/macro-envoi-stat-journalier-outlook-127947#p784852

ça permettait de générer en code HTML une plage de cellule qu'on fournissait à tableHTML via createHTMLMail, et DecVersHexa servait à garder les couleurs en fond, ça ne servira pas ici mais bon, on avait échangé par mail mais je n'ai plus de traces comme le forum a changé.

Je joins un essai que je n'ai pas pu tester comme je n'ai pas outlook, il faudra aussi l'adapter pour la partie createHTMLMail, je laisse la suite à ceux qui ont Outlook (je ne savais même pas que je ne possédais pas de bibilothèque outlook, la loose...)

Merci pour cette réponse je regarde cela dès lundi

Salut Ausecour j'ai donc créer un module que l'on va appelé lors de louverture du fichier et donc si on et lundi et que le fichier n'a pas pas été envoyé on va donc envoyer un mail j'ai donc cela pour l'instant en code :

Sub EnvoiMail()

Dim objMail As Outlook.MailItem

If Date - Weekday(Date, vbMonday) + 1 > Range("s2") Then
    Range("s2") = Date

    'Create e-mail item
    Set objMail = Outlook.Application.CreateItem(olMailItem)
    With objMail
        'Set body format to HTML
        .BodyFormat = olFormatHTML
        .To = "adressemail.test@mail.fr"
        .HTMLBody = "<HTML><BODY>" & tableHTML(Range("a1", "c5")) & "</BODY></HTML>"
        .Display
'        .Send
    End With

End If

End Sub

je n'ai pas encore adapter la range car je ne voit pas quoi mettre pour sélectionné les infos de la page d'acceuil

Bonjour,

oups, je n'ai visiblement pas réussi à joindre mon essai la dernière fois, je tente à nouveau, le code sera différent.

J'ai créé une fonction qui devrait se charger de créer le tableau elle même.

Rechercher des sujets similaires à "envoi mail automatique"