Doublons Excel

bonjour

question peut-être stupide, mais réponse essentielle???

un tableau excel 2007

colonne A les emails de ma base de données (1 million)

colonne B les emails de ma blacklist

je cherche à enlever de la colonne A les emails présents dans la colonne B

merci d'avance si quelqu'un a une idée

cdt

pr

Bonsoir Babou, bonsoir le forum,

Peut-être comme ça :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DLA As Long 'déclare la variable DLA (Dernière Ligne de la colonne A)
Dim DLB As Long 'déclare la variable DLB (Dernière Ligne de la colonne B)
Dim TCA As Variant 'déclare la variable TLA (Tableau de Cellules de la colonne A)
Dim TCB As Variant 'déclare la variable TLB (Tableau de Cellules de la colonne B)
Dim I As Long 'déclare la variable I (Incrément)
Dim J As Long 'déclare la variable J (incrément)
Dim D As Range 'déclare la variable D (Doublons)

Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter)
DLA = O.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DLA de la colonne 1 (=A) de l'onglet O
DLB = O.Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne éditée DLB de la colonne 2 (=B) de l'onglet O
TCA = O.Range("A1:A" & DLA) 'définit le tableau de cellules TCA
TCB = O.Range("B1:B" & DLB) 'définit le tableau de cellules TCB
Set D = O.Range("C1") 'initialise D (juste pour avoir un départ)
For I = 2 To UBound(TCB, 1) 'boucle 1 : sur toutes les lignes du tableau TCB (en partant de la seconde)
    For J = 2 To UBound(TCA, 1) 'boucle 1 : sur toutes les lignes du tableau TCA (en partant de la seconde)
        If TCA(J, 1) = TCB(I, 1) Then 'condition : si le nom dans la colonne A est égal au nom dans la blacklist (colonne B)
            'définit la plage D (la cellule de la colonne A si D est en C1,
            'sinon l'union de la plage D et de la cellule de la colonne A
            Set D = IIf(D.Address = "$C$1", O.Cells(J, 1), Application.Union(D, O.Cells(J, 1)))
        End If 'fin de la condition
    Next J 'prochaine ligne de la boucle 2
Next I 'prochaine ligne de la boucle 1
D.Delete xlShiftUp 'efface la plage D
End Sub

autre remarque peut-etre stupide de ma part???

et on met ça où?

Bonsoir Babou, bonsoir le forum,

Quand tu postes, tu devrais indiquer le type de réponse que tu attends, par formule ou par macro.

Ce que je te propose est une macro en langage VBA (Visual Basic pour Application)...

Maintenant où met-on cela ? Vaste sujet... On m'a déjà proposé tellement d'endroits incongrus où je pouvais mettre mon code...

Plus sérieusement :

• tu copies le code que je t'ai proposé

• tu ouvres ton classeur

• tu ouvres l'éditeur Visual Basic (VBE) avec la combinaison [Alt]+[F11]

• dans le menu tu fais Insertion/Module

• là où le curseur clignote tu colles le code

• tu refermes VBE [Alt]+[F11]

Pour lancer la macro :

• tu ouvres la boîte de dialogue Macros avec [Alf]+[F8]

• éventuellement, tu sélectionnes dans le champ Macro dans, l'option Ce classeur

• tu double-cliques dans la macro Macro1 (ou tu la sélectionnes et tu cliques sur le bouton Exécuter)

La macro s'exécute, tes doublons devraient disparaître... Attention ! Comme désormais ton classeur contient du code, il te faudra le nommer avec l'extension .xlsm

j'ai une erreur 13

voir fichier joint

20 01 2015 19 56 57

Bonsoir Babou, bonsoir le forum,

J'ai testé chez moi sur 300 lignes à peu près et pas de bug. Tu ne me dis même pas quelle est la ligne qui plante !

Si ta voiture est en panne, tu lui amènes une photo ou ta voiture au garagiste ? Sans un fichier exemple impossible de t'aider davantage.

Bonsoir a vous.

Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter)

A voir le nom de la feuille svp.......

@+

Rechercher des sujets similaires à "doublons"