Comparer 2 bases de données

Bonjour à tous!

Dans un cadre professionnel, je souhaite réaliser un e-mailing.

J'ai deux bases de données. Celle de mon entreprise + une base de donnée que j'ai acheté.

Afin de ne pas envoyer de doublons, j'aimerais savoir si certains contact de ma base de donnée ne sont pas également dans celle que j'ai acheté.

Je ne peux pas vérifier nom après nom car chacune des deux bases de données comprend environ 15 000 adresses.

Y a t'il une solution pour les comparer? Et ainsi mettre en exergue les doublons?

Merci d'avance d'avoir pris le temps de me lire, et pour vos réponses.

Cordialement,

Vincent

Salut,

Tu as donc environ 30000 adresses et tu voudrais virer les doublons.

Tu copie tout dans une seule feuille

Tu fais un trie sur la colonne adresse mail

Tu lance une macro qui te vire les doublons. (suppression de lignes)

Tu obtiens la liste mergée sans doublons.

Ce fonctionnement est-il applicable dans ton cas ? Si oui, veux tu la macro ?

Damien

Salut Damien,

Tout d'abord merci pour ta réponse rapide.

Quand tu dis qu'il faut faire un tri sur les adresses, qu'est ce que cela signifie?

Je pense que ce fonctionnement est utilisable dans mon cas, au moins pour les adresses mails.

Dans l'idéal je souhaiterais que l'ensemble des champs renseignés pour chaque entreprise en doublon soit supprimés. De facon à n'avoir qu'une seule fois chaque entreprise avec l'ensemble des renseignements (adresses, mail, télpéhone etc...) sur un seul document.

Mais si la macro me permet déjà d'éviter les doublons pour les adresses mail, je pourrais effectuer mon e-mailing.

Je veux donc bien ta macro. Peux tu m'expliquer, s'il te plait, comment s'en servir?

Merci beaucoup Damien pour le temps que tu consacres à la réponse.

Cordialement,

Vincent

Salut,

Un exemple, si on se base sur une colonne pour définir le doublons.

(Je pense que le mail est bon car il est unique, tu ne peux pas te baser sur le nom de la société car tu pourrais avoir plusieurs contacts de la même société.)

La macro, va extraire les données de la feuille source et les copier dans la feuille résultat. (et ne copiera pas les données si elles existent déja)

Regarde l'exemple, execute la macro et dis moi.

Donc, si tu veux l'utiliser pour ton cas, il faut que tu copies dans un seul onglet ton ancienne liste et ta liste achetée en respectant les colonnes evidemment entre ces deux fichiers.(tout les mails dans la même colonne)

Et lance la macro.

Damien

140doublons.zip (11.64 Ko)

Salut Damien,

Merci! J'ai bien exécuter la macro, c'est exactement ce qu'il me faut.

Comment faire pour l'appliquer à mon cas une fois que tous les emails sont dans la même colonne? Je peux peut etre récuperer la macro à partir de ton fichier?

Merci beaucoup encore!!

Vincent

Oui , tu peux prendre la macro et la mettre dans ton fichier

Méthode :

FAIS UNE COPIE DE TON FICHIER (au cas où)

Ouvre le fichier (fichier où tu as copié tes 2 listes (anciennes + achetées)

dans Excel tape ALT+F11 au clavier => L'editeur VBA s'ouvre

Dans la partie haut gauche Faire un click gauchesur VBAProject(nomfichier.xls)

Click Gauche sur Insertion -> Module

Dans la partie haut droite coller le code suivant :

Sub DeleteDoublonsvers()
Dim plagemail As Range
Dim ret As String
Dim c As Range
Dim ongletsource As Worksheet
Dim ongletdest As Worksheet
Dim i As Integer
Dim compteur As Long
compteur = 0

ret = UCase(InputBox("Donner la lettre de la colonne contenant les mails"))
If ret = "" Then Exit Sub

'A MODIFIER
'******************************************************************************
Set ongletsource = Worksheets("Source")  'Feuille contenant TOUTE LA LSITE
Set ongletdest = Worksheets("Résultat") 'FEUILLE CONTENANT LE RESULTAT
'******************************************************************************

'Définit s'il y a une ligne de titre sur l'onglet de dest
If ongletdest.Range(ret & "1").Value = "" Then
        i = 0
Else
        i = 1
End If

'On copie les valeurs de  feuil1 s'il elle n'existe pas déja dans feuil2
For Each c In ongletsource.Range(ret & "1:" & ret & "65536")
    If c.Value <> "" Then
    If ongletdest.Range(ret & "1:" & ret & "65536").Find(c.Value) Is Nothing Then  'Si on n'a pas trouvé le mail

        ongletsource.Rows(c.Row & ":" & c.Row).Copy
        ongletdest.Range("A" & (ongletdest.Range(ret & "65536").End(xlUp).Offset(i, 0).Row)).PasteSpecial xlPasteAll
        compteur = compteur + 1
        i = 1
    End If
    End If
Next

ongletsource.Activate 'plus jolie
ongletsource.Range("A1").Select
MsgBox "Traitement Terminé" & vbCrLf & compteur & " ligne(s) ajoutée(s)"

End Sub

AVANT de lancer la macro, modifier les lignes :

'******************************************************************************
Set ongletsource = Worksheets("Source")  'Feuille contenant TOUTE LA LSITE
Set ongletdest = Worksheets("Résultat") 'FEUILLE CONTENANT LE RESULTAT
'******************************************************************************

En fonction du nom de tes onglets.

Damien

Damien,

C'est bon je suis parvenu à faire ce que je voulais.

Un grand grand merci pour ton aide précieuse! Et un grand merci d'avoir pris le temps!

Très bonne journée!

Merci encore,

Vincent

Bonjour,

J'ai retrouvé un vieux classeur (remis à jour) qui permet de supprimer les doublons avec en sus:

* la suppression des caractères invisibles

* la suppression des espaces avant et après dans les cellules

* la mise des caractères en minuscules

Cela permet de s'assurer qu'aucun élément pertubateur ne viendra polluer la recherche des doublons

* l'insertion de liens hypertextes

le principe de la suppression des doublons

cTR = 4 'numéro colonne à traiter
    LD = 2  'numéro ligne de départ (si entêtes)
    LF = Columns(cTR).Find("*", Cells(1, cTR), , , , xlPrevious).Row
    Set Plage = Range(Cells(LD, cTR), Cells(LF, cTR))

    For n = LF To LD Step -1
        If NBSI(Plage, Cells(n, cTR).Value) > 1 Then Rows(n).Delete
    Next

Cordialemet

77doublons-v2.zip (20.12 Ko)
Rechercher des sujets similaires à "comparer bases donnees"