Bonjour,
Je viens vers vous pour une question autour d'une macro où je voudrais insérer un tableau Excel dans le corps du message (et en pièce jointe).
Après application de macros, il me reste un tableau que je mets dans un répertoire, puis que j'envoie par mail avec en pj le tableau Excel, un intitulé pré-formaté (texte + date du jour + entête) et un texte pré-formaté également. La tableau compte le nombre de case vide dans une colonne, ce qui donne un texte dans le corps du message.
Ce que je voudrais faire, c'est mettre en brut le tableau Excel directement dans corps du message Excel, comme ca les personnes qui recevront le tableau verront tout de suite s'ils sont concernés par le message et ouvriront ensuite la pièce jointe pour compléter le tableau ou mettre des commentaires.
Pour l'instant j'ai ce code qui marche très bien. J'ai juste remplacé des textes par des "xxxx".
Ma question est : est-ce que ma requête est possible (sachant que le tableau n'est pas fixe au niveau du nombre de ligne, le nombre de colonne est OK, il faudrait avoir un code pour délimiter naturellement le tableau) et facilement insérable dans ce code pour qu'en un seul bouton 'envoi mail', je puisse à la fois mettre tout le code ci-dessous ET le tableau d'excel en brut (ou print écran du tableau uniquement pas de toute la page).
Je ne suis pas spécialiste du tout... un grand merci pour votre aide !
Macro envoie mail :
'Il faut activer la référence "Microsoft Outlook Library" Avant de lancer cette macro,
' Dans l'éditeur VBA: Faire Menu / Tools / Reference / Cocher "Microsoft Outlook xxx.x Object Library"
Sub Envoi()
Dim ObjOutlook As New Outlook.Application
Dim oBjMail
Dim Nom_Fichier As String
Dim Strbody As String
Dim HTLMbody As String
Dim Mess As String
Dim DateJour As Date
Dim jour As String
Dim mois As String
Dim annee As String
Dim Chemin1 As String
Dim PJ1 As String
Dim Message As String
Dim Lien As String
Dim compteur_new As Integer
Sheets("SUSPENS").Activate
Range("i27").Activate
compteur_new = 0
Do
If ActiveCell.Value = 0 Then
compteur_new = compteur_new + 1
ActiveCell.Offset(1, 0).Activate
Else
ActiveCell.Offset(1, 0).Activate
End If
Loop Until ActiveCell.Offset(0, -8).Value = 0
DateJour = Date
jour = Day(DateJour)
mois = Month(DateJour)
annee = Year(DateJour)
If jour < 10 Then
jour = "0" & jour
End If
If mois < 10 Then
mois = "0" & mois
End If
'Message = "Bonjour,<BR><BR>Vous trouverez ci-dessous le lien vers le tableau xxxxxx: <BR><A HREF='x:\xxxx\xxxxx\xxxxxxx'>x:\xxxxxx\xxxxx\xxxxx\xxxxx\xxxxxxxxx</A>"
Message = "Bonjour,<BR><BR>Vous trouverez ci-dessous le lien vers le fichier du tableau des xxxxxx : <BR><A HREF='x:\xxxxx\xxxx\xxxxxxxxx\xxx\xxxxxx\'>x:\xxxx\xxxx\xxxxxxxx\xxxxx\xxxxx\</A>"
If compteur_new > 0 Then
Message = Message & "<BR><BR><B><BIG><FONT COLOR=RED>Attention, " & compteur_new & " xxxxx en vie.</FONT></B></BIG>"
Else
Message = Message & "<BR><BR><B><BIG>Aucun xxxxxx en vie ce jour.</B></BIG>"
End If
Message = Message & "<BR><BR>Bonne journée."
Set ObjOutlook = New Outlook.Application
Set oBjMail = ObjOutlook.CreateItem(olMailItem)
'---------------------------------------------------------
'Exemple pour envoyer un classeur en pièce jointe
'Nom_Fichier = Application.GetOpenFilename("Fichier excel (*.xls;*.xlsx;*.xlsm), *.xls;*.xlsx;*.xlsm")
'If Nom_Fichier = "Faux" Then Exit Sub
'---------------------------------------------------------
'Ou bien entrer le path et nom du fichier autrement
Nom_Fichier = "C:\Documents and Settings\xxxxx\Desktop\Projet_tableau_xxxxxxx.xls"
If Nom_Fichier = "" Then Exit Sub
'---------------------------------------------------------
With oBjMail
.Display
.To = "xxxxx@xxxx.com" ' le destinataire
.CC = "xxxxxxx@xxxxxx.com" 'en copie du mail
.Subject = "Tableau xxxxxx du " & jour & "/" & mois & "/" & annee
.HTMLBody = Message + .HTMLBody
'le corps du mail ..son contenu
.Attachments.Add Nom_Fichier '"C:\Data\essai.txt" ' ou Nomfichier
'send si envoi manuel'
End With
'Si tout fermer sans verification
'ObjOutlook.Quit
'Set oBjMail = Nothing
'Set ObjOutlook = Nothing
End Sub
Un grand merci !
Judisant
Je viens vers vous pour une question autour d'une macro où je voudrais insérer un tableau Excel dans le corps du message (et en pièce jointe).
Après application de macros, il me reste un tableau que je mets dans un répertoire, puis que j'envoie par mail avec en pj le tableau Excel, un intitulé pré-formaté (texte + date du jour + entête) et un texte pré-formaté également. La tableau compte le nombre de case vide dans une colonne, ce qui donne un texte dans le corps du message.
Ce que je voudrais faire, c'est mettre en brut le tableau Excel directement dans corps du message Excel, comme ca les personnes qui recevront le tableau verront tout de suite s'ils sont concernés par le message et ouvriront ensuite la pièce jointe pour compléter le tableau ou mettre des commentaires.
Pour l'instant j'ai ce code qui marche très bien. J'ai juste remplacé des textes par des "xxxx".
Ma question est : est-ce que ma requête est possible (sachant que le tableau n'est pas fixe au niveau du nombre de ligne, le nombre de colonne est OK, il faudrait avoir un code pour délimiter naturellement le tableau) et facilement insérable dans ce code pour qu'en un seul bouton 'envoi mail', je puisse à la fois mettre tout le code ci-dessous ET le tableau d'excel en brut (ou print écran du tableau uniquement pas de toute la page).
Je ne suis pas spécialiste du tout... un grand merci pour votre aide !
Macro envoie mail :
'Il faut activer la référence "Microsoft Outlook Library" Avant de lancer cette macro,
' Dans l'éditeur VBA: Faire Menu / Tools / Reference / Cocher "Microsoft Outlook xxx.x Object Library"
Sub Envoi()
Dim ObjOutlook As New Outlook.Application
Dim oBjMail
Dim Nom_Fichier As String
Dim Strbody As String
Dim HTLMbody As String
Dim Mess As String
Dim DateJour As Date
Dim jour As String
Dim mois As String
Dim annee As String
Dim Chemin1 As String
Dim PJ1 As String
Dim Message As String
Dim Lien As String
Dim compteur_new As Integer
Sheets("SUSPENS").Activate
Range("i27").Activate
compteur_new = 0
Do
If ActiveCell.Value = 0 Then
compteur_new = compteur_new + 1
ActiveCell.Offset(1, 0).Activate
Else
ActiveCell.Offset(1, 0).Activate
End If
Loop Until ActiveCell.Offset(0, -8).Value = 0
DateJour = Date
jour = Day(DateJour)
mois = Month(DateJour)
annee = Year(DateJour)
If jour < 10 Then
jour = "0" & jour
End If
If mois < 10 Then
mois = "0" & mois
End If
'Message = "Bonjour,<BR><BR>Vous trouverez ci-dessous le lien vers le tableau xxxxxx: <BR><A HREF='x:\xxxx\xxxxx\xxxxxxx'>x:\xxxxxx\xxxxx\xxxxx\xxxxx\xxxxxxxxx</A>"
Message = "Bonjour,<BR><BR>Vous trouverez ci-dessous le lien vers le fichier du tableau des xxxxxx : <BR><A HREF='x:\xxxxx\xxxx\xxxxxxxxx\xxx\xxxxxx\'>x:\xxxx\xxxx\xxxxxxxx\xxxxx\xxxxx\</A>"
If compteur_new > 0 Then
Message = Message & "<BR><BR><B><BIG><FONT COLOR=RED>Attention, " & compteur_new & " xxxxx en vie.</FONT></B></BIG>"
Else
Message = Message & "<BR><BR><B><BIG>Aucun xxxxxx en vie ce jour.</B></BIG>"
End If
Message = Message & "<BR><BR>Bonne journée."
Set ObjOutlook = New Outlook.Application
Set oBjMail = ObjOutlook.CreateItem(olMailItem)
'---------------------------------------------------------
'Exemple pour envoyer un classeur en pièce jointe
'Nom_Fichier = Application.GetOpenFilename("Fichier excel (*.xls;*.xlsx;*.xlsm), *.xls;*.xlsx;*.xlsm")
'If Nom_Fichier = "Faux" Then Exit Sub
'---------------------------------------------------------
'Ou bien entrer le path et nom du fichier autrement
Nom_Fichier = "C:\Documents and Settings\xxxxx\Desktop\Projet_tableau_xxxxxxx.xls"
If Nom_Fichier = "" Then Exit Sub
'---------------------------------------------------------
With oBjMail
.Display
.To = "xxxxx@xxxx.com" ' le destinataire
.CC = "xxxxxxx@xxxxxx.com" 'en copie du mail
.Subject = "Tableau xxxxxx du " & jour & "/" & mois & "/" & annee
.HTMLBody = Message + .HTMLBody
'le corps du mail ..son contenu
.Attachments.Add Nom_Fichier '"C:\Data\essai.txt" ' ou Nomfichier
'send si envoi manuel'
End With
'Si tout fermer sans verification
'ObjOutlook.Quit
'Set oBjMail = Nothing
'Set ObjOutlook = Nothing
End Sub
Un grand merci !
Judisant