Envoi tableau Excel dans e-mail avec condition
Bonjour,
Je me permet de faire encore appel à vous car je cherche depuis plusieurs jours et n'arrive pas à résoudre mon problème :
Je cherche à envoyer uniquement les colonnes C à G et les lignes qui contiennent "en attente d'envoi" dans ma colonne "Email". Puis une fois que mon mail est envoyé les cases "en attente d'envoi" se remplisse en "mail envoyé"
exemple :
Marque Catégorie Statut E-mail
Dell Portables En stock Mail envoyé
Lenovo Ordinateurs En stock En attente d'envoi
Lenovo Ordinateurs En stock En attente d'envoi
J'ai déjà fais un bout de code mais cela ne "fusionne" pas mes lignes et envoi un email pour une ligne ...
Public Sub EnvoiMail()
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim adresse As String
Dim message As String
Dim sujet As String
Dim strHTML As String
sujet = "Test" 'Définition du sujet de l'email
For i = 2 To Range("a" & Rows.Count).End(xlUp).Row 'Définition de la plage de test (de la 2ème ligne jusqu'à première cellule vide de la colonne a
strHTML = ""
strHTML = strHTML & "<HEAD>"
strHTML = strHTML & "<BODY>"
strHTML = strHTML & "Bonjour , <BR>vous trouverez ci joint le tableau demandé<BR><BR>"
strHTML = strHTML & "<B><SPAN STYLE='background-color:green;font-size:6mm'>Résultats : </SPAN></B><BR><BR>"
strHTML = strHTML & "<TABLE BORDER>"
strHTML = strHTML & "<TR halign='middle'nowrap>"
For j = 3 To 7 'nombre de colonnes
strHTML = strHTML & "<TD bgcolor='yellow'align='center'><FONT COLOR='blue'SIZE=3>" _
& Cells(i, j) & "</FONT></TD>"
Next j
strHTML = strHTML & "</TR>"
strHTML = strHTML & "</TABLE>"
strHTML = strHTML & "<BR><BR>Cordialement<BR>" & Environ("username")
strHTML = strHTML & "</BODY>"
strHTML = strHTML & ""
If Range("I" & i) = "En attente d'envoi de mail" Then
'Paramètres de l'application mail
Set OutlookApp = CreateObject("outlook.application")
Set OutlookMail = OutlookApp.createitem(0)
With OutlookMail
.Subject = sujet
.To = "test@test.com"
.HTMLBody = strHTML
.send 'envoi du mail
End With
Range("I" & i).Value = "Mail envoyé"
End If
Next i
End Sub
D'avance merci pour votre aide et bonne fêtes à tous !
- Messages
- 4'100
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonsoir,
Essayer cette modification
Public Sub EnvoiMail()
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim adresse As String
Dim message As String
Dim sujet As String
Dim strHTML As String
Dim envoi_mail As Range
sujet = "Test" 'Définition du sujet de l'email
strHTML = ""
strHTML = strHTML & "<HEAD>"
strHTML = strHTML & "<BODY>"
strHTML = strHTML & "Bonjour , <BR>vous trouverez ci joint le tableau demandé<BR><BR>"
strHTML = strHTML & "<B><SPAN STYLE='background-color:green;font-size:6mm'>Résultats : </SPAN></B><BR><BR>"
strHTML = strHTML & "<TABLE BORDER>"
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row 'Définition de la plage de test (de la 2ème ligne jusqu'à première cellule vide de la colonne a
If Cells(i, "I") = "En attente d'envoi de mail" Then
strHTML = strHTML & "<TR halign='middle'nowrap>"
For j = 3 To 7 'nombre de colonnes
strHTML = strHTML & "<TD bgcolor='yellow'align='center'><FONT COLOR='blue'SIZE=3>" & Cells(i, j) & "</FONT></TD>"
Next j
strHTML = strHTML & "</TR>"
If envoi_mail Is Nothing Then Set envoi_mail = Cells(i, "I") _
Else Set envoi_mail = Union(envoi_mail, Cells(i, "I"))
End If
Next i
strHTML = strHTML & "</TABLE>"
strHTML = strHTML & "<BR><BR>Cordialement<BR>" & Environ("username")
strHTML = strHTML & "</BODY>"
strHTML = strHTML & ""
'Paramètres de l'application mail
Set OutlookApp = CreateObject("outlook.application")
Set OutlookMail = OutlookApp.createitem(0)
With OutlookMail
.Subject = sujet
.To = "test@test.com"
.HTMLBody = strHTML
.send 'envoi du mail
End With
'mise à jour indicateur des lignes envoyées
envoi_mail.Value = "Mail envoyé"
End Sub
Bonjour,
Un grand merci pour votre aide ça marche nickel !!!!
Par contre je ne connaissais pas du tout cette "formule" :
If envoi_mail Is Nothing Then Set envoi_mail = Cells(i, "I") _
Else Set envoi_mail = Union(envoi_mail, Cells(i, "I"))
Auriez vous quelques explications ?
Encore merci !
- Messages
- 4'100
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
L'instruction "Set" définit un objet qui dans ce cas, est une plage de cellules (Range).
La méthode "Union" permet de définir un ensemble de plages de cellules continues ou discontinues.
Dans le cas présent, elle définit dans la colonne I , la plage de cellules correspondant aux lignes envoyées.