Masquer les lignes d'un tableau dans le corps d'un mail
Bonjour,
Je me permets de vous solliciter sur un problème de macro VBA.
j'ai réalisé un tableau de bord sur des tâches qui par un clic bouton s'envoie par mail directement par excel à des utilisateurs. Dans le mail, le tableau apparaît dans le corps du message sous forme d'image du tableau. Mon problème, c'est que mon tableau est filtré en fonction des tâches à réaliser par tel ou tel utilisateur, dans le mail, le tableau apparaît au complet, les lignes masquées sont à vides. Je souhaiterais que les lignes masquées ne soient pas présentes dans le corps du mail.
Avez-vous une astuce?
Voici mon code:
Sub SendEmail_Tab()
Application.DisplayAlerts = False
Dim outlookApp As Outlook.Application
Dim MItem As Outlook.MailItem
Dim Cell As Range
Dim Project, EmailAddr, Msg, Subj As String
Dim TEXTE_AVANT, TEXTE_APRES As String
Dim NbLigne As Integer
TEXTE_AVANT = "Merci de travailler les tâches suivantes."
TEXTE_APRES = "Ci_dessous le tableau des tâches :"
EmailAddr = Sheets("Base_Saisie").Range("e3")
cCAddr = Sheets("Base_saisie").Range("e4")
Sheets("Base_Saisie").Select
Set outlookApp = New Outlook.Application
Subj = "Situations à investiguer pour " & Range("d3")
Msg = Msg & TEXTE_AVANT
NbLigne = Sheets("Base_Saisie").Range("A" & Application.Rows.Count).End(xlUp).Row
Sheets("Base_Saisie").Range("A2:f" & NbLigne).Select
ActiveWorkbook.EnvelopeVisible = True
Selection.Copy
Msg = Msg & vbCrLf
Msg = Msg & TEXTE_APRES & vbCrLf
Msg = Msg & vbCrLf
With ActiveSheet.MailEnvelope
.Introduction = Msg
.Item.To = EmailAddr
.Item.CC = cCAddr
.Item.Subject = Subj
.Item.Send
End With
MsgBox "Votre Mail a été envoyé.", vbInformation + vbOKOnly, "CONFIRMATION ENVOI MAIL"
Set MItem = outlookApp.CreateItem(olMailItem)
Application.DisplayAlerts = True
End SubJe vous remercie par avance.
Nawel
Bonjour
Essayez en définissant la plage à copier plutôt que d'utiliser Selection.copy
Dim plage as range
Set plage = Selection.SpecialCells(xlCellTypeVisible)ou comme ceci --> Ce qui vous permet de supprimer les deux lignes Selection.copy et la ligne Sheets("Base_saisie").........select
Dim plage as range
Set Plage = Sheets("Base_Saisie").Range("A2:f" & NbLigne).SpecialCells(xlCellTypeVisible)je n'ai pas testé mais il ne vous manque pas .item.body dans votre code ?
Cordialement
