Macro envoi stat journalier Outlook

Bonjour !

Je me permet de créer ce sujet car j'aimerais pouvoir automatiser l'envoi journalier d'un mail (outlook) qui indiquerai des données critiques récupéré sur mon TDC qui s'actualise toutes les 10min.

Voici mon TDC

screenshot 1

Du coup le mail devra contenir que les objet ayant un seuil "critique" et être envoyé par exemple tout les matins a 8h (Le pc tourne H24), le problème ce que j'ai plusieurs page et je ne sais pas comment faire ..

Je vous avoue que j'ai jamais fait de macro, déjà la mise en place des TDC était Hardcore alors bon x)

J'ai pas trouver de sujet ayant ce thème la ?

Je vous remercie d'avance et vous souhaite une bonne journée !

Bonjour et sur le forum,

Je ne suis pas expert pour l'envoi de mail automatique avec HTML, du coup j'ai commencé à me pencher dessus, j'ai créé une fonction personnalisée qui crée le code d'un tableau en HTML avec les largeurs de colonnes correspondantes, je te joins le fichier qui l'utilise:

Après je m'y connais assez peu en HTML malheureusement, j'ai tenté quelque chose pour les couleurs, mais ça ne suit pas bien, je ne comprends pas trop comment fonctionne la fonction Hex()...

Salut !

Je pense mettre mal exprimé, c'est bien du excel et pas de l'HTML, mon fichier ..

Salut !

Je pense mettre mal exprimé, c'est bien du excel et pas de l'HTML, mon fichier ..

Salut!

Je sais, mais si tu veux envoyer ton message, il faut passer par du HTML j'ai finalement trouvé une solution pour créer un tableau qui suit niveau couleurs:

J'ai dû contourner la fonction Hex qui ne marchait pas comme je voulais...

Pour la suite, il faudrait que j'ai des éléments supplémentaires pour le code, comme ton tableau, savoir qu'est-ce qui est critique, etc...

On a déjà la partie la plus compliquée de faite d'après moi, maintenant il faut aller chercher les infos de ton TCD pour les mettre dans ma fonction personnalisées pour pouvoir l'intégrer à ton mail

Merci beaucoup pour cette info !

Cependant le problème est que les valeurs fluctue en fonction de notre stock, hormis la cellule qui est fixe en sachant que je voudrais que le mail intègre les infos de toutes mes feuilles.

Par exemple dans la feuille Stock Peripheriques : la cellule B7 doit être mis dans le mail si sa valeur atteins 6 ou moins.

etc

etc

Donc je pense que je dois ajouter ces Si pour chaque article avec la condition ?

screenshot 2

Pour la couleur des cellules, j'ai déjà utilisé la "Mise en forme Conditionnelle"

Re,

je crois qu'on a quelques difficultés pour se comprendre:

pour la partie TCD, il suffit d'après moi de le mettre à jour, la mise en forme conditionnelle et le reste est géré par Excel, ce qu'il reste à faire si j'ai compris, c'est de sélectionner les lignes pour lesquelles une des valeur est inférieure à 6, de les intégrer dans un message, qui sera envoyé automatiquement.

Le souci, c'est que des impressions d'écran ne me permettront pas d'aller plus loin dans l'échange, j'ai déjà fournis ce que je pouvais: un code qui permet de générer un message automatiquement et une fonction personnalisée tableHTML, qui permet de générer un tableau en code HTML pour le mettre dans le message, car le message doit être codé en HTML pour être envoyé automatiquement.

D'accord donc juste pour me clarifier :

Spoiler

Sub CreateHTMLMail()

'Creates a new e-mail item and modifies its properties

Dim objMail As Outlook.MailItem

'Create e-mail item

Set objMail = Outlook.Application.CreateItem(olMailItem)

With objMail

'Set body format to HTML

.BodyFormat = olFormatHTML

.HTMLBody = "<HTML><BODY>" & tableHTML(Range("a1", "c5")) & "</BODY></HTML>"

.Display

End With

End Sub

Ce bout permet la monter en HTML

Spoiler

Private Function tableHTML(plage As Range) As String

tableHTML = "<TABLE border=1 width=" & plage.Columns.Width & ">" & Chr(10) & "<TR>"

For Each col In plage.Columns

tableHTML = tableHTML & "<TH width=" & col.Width & ">" & plage.Cells(1, col.Column)

Next col

If plage.Rows.Count > 1 Then

For i = 2 To plage.Rows.Count

tableHTML = tableHTML & "<TR>"

For j = 1 To plage.Columns.Count

tableHTML = tableHTML & "<TD bgcolor=" & DecVersHexa(plage.Cells(i, j).Interior.Color) & ">" & plage.Cells(i, j)

Next j

Next i

End If

tableHTML = tableHTML & "</TABLE>"

End Function

Celui ci la sélection des cellules et la mise en forme du tableau ?

Spoiler

Function DecVersHexa(ByVal valeur As Long) As String

rouge = Left(Hex(Int(valeur Mod 256)) & "00", 2)

vert = Left(Hex(Int((valeur Mod 65536) / 256)) & "00", 2)

bleu = Left(Hex(Int(valeur / 65536)) & "00", 2)

DecVersHexa = rouge & vert & bleu

End Function

Permet l'application de couleur lors des cellules ?

Tu ma offert un cadeau mais j'suis encore un newbie pour le comprendre x)

Re,

premier bout= création d'un message avec le texte qui va dedans


deuxième bout= est appelé dans le premier morceau ici:

.HTMLBody = "<HTML><BODY>" & tableHTML(Range("a1", "c5")) & "</BODY></HTML>"

il permet de convertir une plage de cellules en un code HTML qui correspondera à un tableau avec lignes, colonnes, et couleurs de cellules


troisième bout= est appelé dans le deuxième morceau, en HTML, pour affecter une couleur à une cellule, ils utilisent de l'hexadécimal, le problème, c'est que la couleur de la cellule n'est pas dans ce format, cette fonction sert donc à convertir la valeur d'Excel en quelque chose d'exploitable en HTML

D'ailleurs j'aurais dû la déclarer Private, je corrige ça et te retourne le fichier:

En clair la façon d'utiliser tout ça: tu pourras t'inspirer du premier bout de code pour créer un message et l'envoyer, et utiliser la fonction tableHTML(plage as Range) pour convertir une plage de cellules en code HTML

EDIT: J'ai changé le fichier attaché au message, il est désormais plus complet en terme de codage

Parfait sa fonctionne cependant il ne me récupère pas les couleurs qui sont automatique en fonction du nombre d'objet, j'ai une modif a faire ?

screenshot 3

As-tu la ligne pour faire : Si B7 atteind égale ou inférieur a 4 mettre dans le tableau ?

Après j'ai juste a dupliquer la macros pour le nombre de chaque feuille.

Re,

Mince, de la mfc, pas grave, on peut s'en sortir, en fait à chaque ligne qui peut être prise, il faudrait copier la ligne dans une feuille qui servira pour le mail, il faudrait donc faire quelque chose comme:

if range("b" & i) <= 4 then
    with sheets("mail")
        for j = 1 to 4
            .cells(ligexport, j) = cells(i, j)
            .cells(ligexport, j).interior.color = cells(i, j).displayformat.interior.color
        next j
        ligexport = ligexport + 1
    end with
end if

ça c'est l'idée, le code est bien sûr à adapter, le tableau qui se trouvera dans la feuille "mail" servira ensuite pour la fonction tableHTML

D'accord donc j'ai bien crée une feuille "mail" vide , par contre j'ai ajouté le bout dans la macro ce qui me donne sa :

screenshot 4

Et j'obtiens une erreur en fluo : ligexport = Vide ; cells(i , j) = "ZEBRA DS3608 Sérialisation"

Pourquoi il tape sur cette ligne et pas celle d'avant ? Peux-être a cause du "é" ?

Re,

Ce n'était pas dans la fonction tableHTML qu'il fallait mettre le code, mais dans un autre code qui se charge de: créer un tableau sur la feuille "mail" en copiant les lignes qui correspondent à ta condition, puis crée un message en appelant tableHTML, fonction à laquelle le programme fournit la plage créée dans la feuille "mail"

Je t'aiderais bien mais je ne peux pas trop avec des screens

Envoyé par MP

UN grand MERCI @ausecour pour ton aide et ton sang froid avec un noob tu ma beaucoup appris !

Sujet clos

Rebonjour,

pas de souci, ne te rabaisse pas par contre ce sujet m'a donné du fil à retordre en plus, il était assez compliqué, tes tableaux ne faisaient pas la même taille, étaient sur des feuilles différentes, avaient des minimums différents, et il fallait envoyer un mail comprenant le tableau avec les couleurs venant de la mise en forme, c'était la partie que je ne maîtrisait pas du tout

Grâce au sujet que tu as proposé, j'ai pu pratiquer un peu la gestion des mails par macro et du coup j'ai appris aussi de mon côté, comme c'est le premier sujet traitant d'Outlook que je traite vraiment aussi profondémment

Bonne continuation

Rechercher des sujets similaires à "macro envoi stat journalier outlook"