XL 2016 macro mail excel plusieurs colonnes

youpi457032

XLDnaute Occasionnel
Bonjour,
Je vous joins mon code qui expédie ma liste de mail dans outlook, sans doublon.
Je voudrais que ce code vérifie trois colonnes, et non pas une seule, toujours sans doublon.
Mes autres colonnes à vérifier sont les colonnes S et W
Quelqu'un a t-il une astuce ?
Merci.
le code :

Sub Envoyer_Mail_global_Outlook()
Dim DLig As Long, Lig As Long
Dim ObjOutlook As New Outlook.Application
Dim oBjMail As Outlook.MailItem
Dim Nom_Fichier As String
Dim Destinataire As String
' Activer la référence : Microsoft Scripting Runtime
' Définir l'Objet Dictionnaire
Dim MonDico As New Scripting.Dictionary
' Ou définir Mondico comme objet et Créer l'instance du dictionnaire
' Dim MonDico As Object
'Set MonDico = CreateObject("Scripting.Dictionary")

' Initialiser l'instance Outlook
Set ObjOutlook = New Outlook.Application
Set oBjMail = ObjOutlook.CreateItem(olMailItem)
' Avec la base
With Sheets("Résultat_du_filtre")
' Dernière ligne de la feuille
DLig = .Range("P" & Rows.Count).End(xlUp).Row
' Pour chaque ligne
For Lig = 2 To DLig
' Vérifier si ligne affichée
If .Range("P" & Lig).EntireRow.Hidden = False Then
' En cas d'erreur on continue le code
On Error Resume Next
' Tenter d'ajouter le mail au dictionnaire : doublon impossible
MonDico.Add .Range("P" & Lig).Value, ""

' Si pas d'erreur, ajouter l'adresse
If Err.Number = 0 Then
Destinataire = Destinataire & .Range("P" & Lig).Value & ";"

End If
On Error GoTo 0
End If
Next Lig
End With
' Envoyer le mail
With oBjMail
.BCC = Destinataire 'le destinataire
.Subject = ""
.Body = "Bonjour,"
'.Attachments.Add ActiveWorkbook.FullName
.Display
'.Send ' Ici tu peux l'activer si tu ne veux pas vérifier le mail
End With
' Effacer les variables objet pour libérer la mémoire
Set oBjMail = Nothing
Set ObjOutlook = Nothing
Set MonDico = Nothing
End Sub
 
C

Compte Supprimé 979

Guest
Bonjour youpi457032

Merci d'éditer ton 1er post et de mettre ton code entre balise [ CODE] et [ /CODE] sans espace après le [

N'oublie pas de joindre un fichier, sinon c'est compliqué ;)

VB:
Sub Envoyer_Mail_liste_filtrée_Outlook()
  Dim DLig As Long, Lig As Long
  Dim ObjOutlook As New Outlook.Application
  Dim oBjMail As Outlook.MailItem
  Dim Nom_Fichier As String
  Dim Destinataire As String
  ' Activer la référence : Microsoft Scripting Runtime
  ' Définir l'Objet Dictionnaire
  Dim MonDico As New Scripting.Dictionary
  ' Ou définir Mondico comme objet et Créer l'instance du dictionnaire
  ' Dim MonDico As Object
  'Set MonDico = CreateObject("Scripting.Dictionary")
 
  ' Initialiser l'instance Outlook
  Set ObjOutlook = New Outlook.Application
  Set oBjMail = ObjOutlook.CreateItem(olMailItem)
  ' Avec la base
  With Sheets("base_PDV")
    ' Dernière ligne de la feuille
    DLig = .Range("B" & Rows.Count).End(xlUp).Row
    ' Pour chaque ligne
    For Lig = 2 To DLig
      ' Vérifier si ligne affichée ET si les cellules Sx et Wx = quelquechose
      If .Range("B" & Lig).EntireRow.Hidden = False _
        And .Range("S" & Lig).Value = "MonCritère" _
        And .Range("W" & Lig).Value = "MonCritère" Then
        ' En cas d'erreur on continue le code
        On Error Resume Next
        ' Tenter d'ajouter le mail au dictionnaire : doublon impossible
        MonDico.Add .Range("B" & Lig).Value, ""
        ' Si pas d'erreur, ajouter l'adresse
        If Err.Number = 0 Then
          Destinataire = Destinataire & .Range("B" & Lig).Value & ";"
        End If
        On Error GoTo 0
      End If
    Next Lig
  End With
  ' Envoyer le mail
  With oBjMail
    .BCC = Destinataire  'le destinataire
    .Subject = ""
    .Body = "Bonjour,"
    '.Attachments.Add ActiveWorkbook.FullName
    .Display
    '.Send '  Ici tu peux l'activer si tu ne veux pas vérifier le mail
  End With
  ' Effacer les variables objet pour libérer la mémoire
  Set oBjMail = Nothing
  Set ObjOutlook = Nothing
  Set MonDico = Nothing
End Sub

A+
 
Dernière modification par un modérateur:

youpi457032

XLDnaute Occasionnel
Merci Bruno.
En fait je souhaitais ajouter les adresses mail qui seraient contenues soit en "S", soit en "W". Elles doivent aussi s'ajouter sans doublon à l'adresse principale (qui est en colonne P). Dans mon fichier ces adresses mails en "S" et "W" correspondent à des civilement responsables. Elles doivent automatiquement être rapatriées comme la conne P ( adresse principale) si jamais ces colonnes contiennent un mail .
Merci de me repréciser si c'est la bonne macro finalisée pour mes besoins .
En tout cas c'est super gentil à toi ! un super merci pour la réactivité.

J'aurai aussi besoin après d'une macro bien complexe pour une autre partie de mon fichier, pourrais-je me permettre de te solliciter ? Car moi je sens qu'à ce niveau de besoin je vais caler !
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
247

Statistiques des forums

Discussions
312 198
Messages
2 086 136
Membres
103 129
dernier inscrit
Atruc81500