XL 2016 Envoie de mail avec filtre

CompteSupprimé1

XLDnaute Nouveau
Bonjour à tous,

A l'heure où j'écris ce message, je fais mes premiers pas dans le VBA et j'avoue ne pas m'en sortir seul. Je vous serai donc reconnaissant de bien vouloir m'apporter votre éclairage :)

Voici la cadre : j'ai un mailing list qui doit servir à envoyer un mail individualisé à chaque adresse électronique renseignés dans une colonne. Ayant rajouté un filtre et le prenant en compte dans mon code, il est censé ne s'afficher que les mails des destinataires filtrés. Or, dans mon cas et après filtrage, l'adresse électronique en ligne 2 est systématiquement prise en compte à chaque fois que je lance le code et l'adresse de la dernière ligne, elle ne sera pas prise en compte.

Ainsi, j'aimerai que seules les adresses filtrées soient prises en compte.

Je vous joins le code et le fichier et vous remercie par avance pour vos réponses.
VB:
Sub mail_indiv_remi()

Dim mail As Worksheet
Set Remi = ThisWorkbook.Sheets("Remi")
Dim i As Integer

Dim OA As Object
Dim msg As Object

Set OA = CreateObject("outlook.application")

Dim last_row As Integer
last_row = Application.CountA(Remi.Range("B1:B200").SpecialCells(xlCellTypeVisible))
For i = 2 To last_row
Set msg = OA.CreateItem(0)
msg.To = Remi.Range("B" & i).Value
msg.CC = Remi.Range("D" & i).Value
msg.Subject = Remi.Range("V12").Value
msg.Body = Remi.Range("V15").Value

If Remi.Range("F" & i).Value <> "" Then
msg.Attachments.Add Remi.Range("F" & i).Value
End If

msg.Display

Next i

MsgBox "Tous vos mails sont affichés"
End Sub

Cdt,

Oscar

PS : vous m'excuserez pour le pseudo
 

Pièces jointes

  • Mail RMA médecin macro local .xlsm
    38 KB · Affichages: 5

Wayki

XLDnaute Impliqué
Bonjour,
Essayez :
VB:
Sub mail_indiv_remi()

Dim mail As Worksheet
Set Remi = ThisWorkbook.Sheets("Remi")
Dim i As Integer

Dim OA As Object
Dim msg As Object

Set OA = CreateObject("outlook.application")

Dim last_row As Integer
last_row = Application.CountA(Remi.Range("B1:B200").SpecialCells(xlCellTypeVisible))
For i = 2 To last_row
If Remi.range("B" & i).visible = True then
Set msg = OA.CreateItem(0)
msg.To = Remi.Range("B" & i).Value
msg.CC = Remi.Range("D" & i).Value
msg.Subject = Remi.Range("V12").Value
msg.Body = Remi.Range("V15").Value
End if

If Remi.Range("F" & i).Value <> "" Then
msg.Attachments.Add Remi.Range("F" & i).Value
End If

msg.Display

Next i

MsgBox "Tous vos mails sont affichés"
End Sub
A +