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
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