Nettoyage liste de diffusion sur excel

  • Initiateur de la discussion Initiateur de la discussion Excel2003
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

Excel2003

Guest
Bonjour,

J’ai un problème pour le nettoyage de ma liste de diffusion

J’ai sur la colonne A les adresses e-mail de mes clients ainsi que celles des nouveaux prospects et sur la colonne B les adresses e-mail des personnes qui se sont désinscrites et qui ne souhaitent plus recevoir nos newsletters.

J’aimerais avoir en C la liste A moins la liste B

Avant, j’ai pris une à une les adresses de B pour la rechercher sur A et supprimer manuellement, mais maintenant il y en a tellement d’e-mail que sa devient fastidieux.

Merci de votre aide.
 
Re : Nettoyage liste de diffusion sur excel

Bonjour Excel2003 et bienvenue,

Un petit bout de fichier avec quelques données "bidon" permettrait de tester une proposition, avant de la soumettre.
Je vois bien une solution avec une formule matricielle (mais il y a plus simple, si tu acceptes de "sacrifier" une colonne à des calculs "intermédiaires").

La questions étant: "une solution par formule conviendra-t-elle?" ... Autrement dit, quelle manipulations vas-tu devoir faire sur base de la colonne C ??
 
Re : Nettoyage liste de diffusion sur excel

Bonjour,

merci de votre réponse,

une solution simple et par formulaire conviendra peut-être.


je vais m'expliquer encore un peu :

Colonne A : une liste d'adresse e-mails
Colonne B : une autre liste d'adresse e-mails à vérifier et à supprimer si elles se trouvent dans A
Colonne C = A - B
 
Re : Nettoyage liste de diffusion sur excel

Re-bonjour,

je vais m'expliquer encore un peu :
Colonne A : une liste d'adresse e-mails
Colonne B : une autre liste d'adresse e-mails à vérifier et à supprimer si elles se trouvent dans A
Colonne C = A - B
Là n'était pas ma question 🙂 d'autant que tu redis la même chose que la première fois.

... Et puis, j'ai parlé de formules, par de formulaires! 😕

Par contre, de fichier exemple ... toujours point!? J'ai donc fait "à la hussarde" et tu verras ce que tu peux en retirer!
 

Pièces jointes

Re : Nettoyage liste de diffusion sur excel

Bonjour le forum, Modeste

essaye ceci "Excel2003":

Sub Doublons2Colonnes() ' repérer par fonction "index"
' mettre "oui" en colonne 1 si trouvé
' repérer les articles qui se trouvent dans les 2 colonnes
Dim Col1, Col2
Application.ScreenUpdating = False
If Not Application.CountA(Columns(1)) = 0 Then
MsgBox ("Données à comparer en c et b , colonne A doit être vide !!! " & Chr(13) & Chr(13) & "sortie du code"): Exit Sub
End If
[A1].Value = "Double"
Set Plage1 = Range("b2", [b65000].End(xlUp)) ' colonne la + courte
Set plage2 = Range("c2", [c65000].End(xlUp))
[A:C].ClearComments
[A:C].Interior.ColorIndex = xlNone
For Each C In Plage1
If Not IsError(Application.Match(C.Value, plage2, 0)) Then
C.Offset(0, -1) = "oui"
C.Interior.ColorIndex = 20
Else
C.Interior.ColorIndex = 3
End If
Next C
For Each C In plage2
If Not IsError(Application.Match(C.Value, Plage1, 0)) Then
C.Interior.ColorIndex = 20
'C.Offset(0, 7).Value = "OUI"
Else
C.Interior.ColorIndex = 3
End If
Next C
End Sub
 
Re : Nettoyage liste de diffusion sur excel

Bonsoir le forum,

Tes données en Feuil1, colonnes A et B à partir de la ligne 1 et sans en-tête
Résultat en colonne D :
VB:
Sub nettoyage()
Dim a, i As Long, n As Long
    With Sheets("Feuil1")
        With .Range("A1").CurrentRegion
            a = .Value
            With CreateObject("Scripting.Dictionary")
                .CompareMode = 1
                For i = 1 To UBound(a, 1)
                    .Item(a(i, 2)) = Empty
                Next
                For i = 1 To UBound(a, 1)
                    If Not .exists(a(i, 1)) Then
                        n = n + 1
                        a(n, 1) = a(i, 1)
                    End If
                Next
            End With
        End With
        If n > 0 Then
            With .Range("D1").Resize(n)
                .CurrentRegion.Clear
                .Value = a
            End With
        End If
    End With
End Sub
Edit : laissez la colonne C vide ou coller le résultat dans une autre feuille si vous ne voulez pas effacer toutes vos données par mégarde.

Klin89
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
179
Réponses
24
Affichages
2 K
Retour