Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Envoyer mails, n’envoie pas toutes les lignes

Sellig

XLDnaute Junior
Bonjour,

Est-ce que quelqu’un pourrait m’aider à résoudre mon problème sur le tableau joint ?

Lorsque je clique sur ‘’envoyer’’ uniquement les 3 premières lignes sont envoyées, alors que j’ai 5 adresses mails. Et pourtant la ligne « To last_row » est bien présente.

Évidement, j’ai besoin des 2 lignes vides au dessus, Lignes 1 et 2.

Merci par avance pour votre aide.

Cordialement
 

Pièces jointes

  • Envoi de mails.xlsm
    29.6 KB · Affichages: 5
Solution
@Sellig

Je te propose ceci :

VB:
Option Explicit

Sub Envoi_mails()
Dim Ws As Worksheet, OutApp As Object, OutMail As Object, DerLig&, i&

Set Ws = Worksheets("Envoi mails")
DerLig = Ws.Range("A" & Rows.Count).End(xlUp).Row

For i = 4 To DerLig
    If Ws.Range("H" & i).Value <> "NON" Then
        On Error Resume Next
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
        With OutMail
            .To = Ws.Range("A" & i).Value
            .CC = Ws.Range("B" & i).Value
            .BCC = Ws.Range("C" & i).Value
            .Subject = Ws.Range("D" & i).Value
            .Body = Ws.Range("E" & i).Value
            
            If Ws.Range("F" & i).Value <> "" Then...

Sellig

XLDnaute Junior
Et tu l'as fait ?

Quel résultat ?

Montre les copies d'écran de ce que tu as fait avec le résultat !
Le résultat est qu’il envoie bien la ou les lignes prévue (Fig1) mais également toutes les autres sans adresses mail (Fig2)

Le mieux serait que vous testiez mon fichier joint.
 

Pièces jointes

  • Envoi de mails.xlsm
    53.9 KB · Affichages: 7
  • Fig1.PNG
    120.7 KB · Affichages: 7
  • Fig2.PNG
    240.4 KB · Affichages: 5

TooFatBoy

XLDnaute Barbatruc
Le résultat est qu’il envoie bien la ou les lignes prévue (Fig1) mais également toutes les autres sans adresses mail (Fig2)
Évidemment, tu as écrit "Fin" en colonne A !!!
C'est d'ailleurs pour éviter ce genre de problème que dans ce cas je préfère chercher la dernière ligne en partant du haut du tableau.

As-tu essayé avec un Tableau Structuré ?
 

Phil69970

XLDnaute Barbatruc
@Sellig

Je te propose ceci :

VB:
Option Explicit

Sub Envoi_mails()
Dim Ws As Worksheet, OutApp As Object, OutMail As Object, DerLig&, i&

Set Ws = Worksheets("Envoi mails")
DerLig = Ws.Range("A" & Rows.Count).End(xlUp).Row

For i = 4 To DerLig
    If Ws.Range("H" & i).Value <> "NON" Then
        On Error Resume Next
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
        With OutMail
            .To = Ws.Range("A" & i).Value
            .CC = Ws.Range("B" & i).Value
            .BCC = Ws.Range("C" & i).Value
            .Subject = Ws.Range("D" & i).Value
            .Body = Ws.Range("E" & i).Value
            
            If Ws.Range("F" & i).Value <> "" Then
                .Attachments.Add Ws.Range("F" & i).Value
            End If
            If Ws.Range("G" & i).Value <> "" Then
                .Attachments.Add Ws.Range("G" & i).Value
            End If
            
            .Send
        End With
    End If
Next i

MsgBox "Messages Envoyés"
Set OutMail = Nothing: Set OutApp = Nothing
End Sub

Merci de ton retour
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…