IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

supprimer doublons sur 40000 lignes


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de eillon
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 117
    Par défaut supprimer doublons sur 40000 lignes
    Bonjour,

    Je recherche un "truc" un peu complexe, sur deux listes de 20 000 lignes, il faut que je dégage les doublons et comparer si les restant appartiennent à la liste 1 ou 2.

    Je peux mettre les lignes sur colonnes A et B de la même feuille.

    En fait je voudrais déplacer les doublons colonnes A et B en Feuil2 et qu'il reste dans chaque colonne Feuil1 les uniques correspondant aux colonnes.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bon, je me lance.
    Pas sur que ce soit simple a comprendre

    Recherche des doublons
    En C1 tu mets cette formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(NB.SI(A:A;B1)>=1;B1;"")
    En D1 tu mets cette formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(NB.SI(B:B;A1)>=1;A1;"")
    Tu copies ensuite les celles C1 et D1 sur tes 20 000 lignes

    Récupération des valeurs unique des doublons

    Tu sélectionnes la colonne D que tu copie en valeur a la suite de la colonne C
    Ensuite tu utilises le filtre élaboré pour faire une copie sans doublons

    Il te faudra peut etre un peu plus d'éclaircissement sur la deuxieme partie. A toi de nous le dire

  3. #3
    Membre actif Avatar de eillon
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 117
    Par défaut
    Je pense que ça marche, le problème c'est que c'est super long...

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    c'est quoi qui est long?

  5. #5
    Membre actif Avatar de eillon
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 117
    Par défaut
    Excel met deux plombes à faire les calculs

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Tant que c'est moins long qu'a la main ...

  7. #7
    Membre actif Avatar de eillon
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 117
    Par défaut
    Je ne comprends rien, merci quand même.

  8. #8
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    de rien, mais ça marche au moins ? si oui, est-ce que c'est rapide ? Tu veux une démo sur ton fichier exemple ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Avec Dictionnary:

    0,6 secondes pour 2x10000

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    Sub Communs()
     t = Timer()
     Set MonDico1 = CreateObject("Scripting.Dictionary")
      For Each c In Range([A1], [A65000].End(xlUp))
        If Not MonDico1.Exists(c.Value) Then MonDico1.Add c.Value, c.Value
      Next c
      Set mondico2 = CreateObject("Scripting.Dictionary")
      For Each c In Range([B1], [B65000].End(xlUp))
        If MonDico1.Exists(c.Value) Then mondico2.Add c.Value, c.Value
      Next c
      i = 1
      Range("H1:H" & mondico2.Count) = Application.Transpose(mondico2.items)
      MsgBox Timer() - t
    End Sub
     
    Sub NonDoublons1()
     Set MonDico1 = CreateObject("Scripting.Dictionary")
      For Each c In Range([A1], [A65000].End(xlUp))
        If Not MonDico1.Exists(c.Value) Then MonDico1.Add c.Value, c.Value
      Next c
      Set mondico2 = CreateObject("Scripting.Dictionary")
      For Each c In Range([B1], [B65000].End(xlUp))
        If Not MonDico1.Exists(c.Value) Then
           mondico2.Add c.Value, c.Value
        End If
      Next c
      i = 1
      For Each c In mondico2
        Cells(i, "M") = c
        i = i + 1
      Next c
    End Sub
     
    Sub NonDoublons2()
     Set MonDico1 = CreateObject("Scripting.Dictionary")
      For Each c In Range([B1], [B65000].End(xlUp))
        If Not MonDico1.Exists(c.Value) Then MonDico1.Add c.Value, c.Value
      Next c
      Set mondico2 = CreateObject("Scripting.Dictionary")
      For Each c In Range([A1], [A65000].End(xlUp))
        If Not MonDico1.Exists(c.Value) Then
           mondico2.Add c.Value, c.Value
        End If
      Next c
      i = 1
      For Each c In mondico2
        Cells(i, "P") = c
        i = i + 1
      Next c
    End Sub
    JB

  10. #10
    Membre actif Avatar de eillon
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 117
    Par défaut
    Pour le coup, c'est très rapide, mais il bloque sur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub NonDoublons2()
     Set MonDico1 = CreateObject("Scripting.Dictionary")
      For Each C In Range([B1], [B65000].End(xlUp))
        If Not MonDico1.Exists(C.Value) Then MonDico1.Add C.Value, C.Value
      Next C
      Set mondico2 = CreateObject("Scripting.Dictionary")
      For Each C In Range([A1], [A65000].End(xlUp))
        If Not MonDico1.Exists(C.Value) Then
           mondico2.Add C.Value, C.Value
        End If
      Next C
      i = 1
      For Each C In mondico2
        Cells(i, "D") = C
        i = i + 1
      Next C
    End Sub
    ddans la deuxième doublons.


    Pour répondre à jacques_jean

    le but semble être de ne conserver que les valeurs de A qui ne sont pas présentes en B et les valeurs de B qui ne sont pas présentes en A
    C'est ça, le but étant de récupérer un fichier propre chaque jour.
    Je reçois une liste tous les jours avec des références que je tris avec les anciennes réf, les nouvelles et les communes.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour Boisgontier,

    En effet, très bien, j'ai fait un test et cela fonctionne sans problème.

    Juste 2 remarques :

    1) Dans la 1ère procédure, j'ai un message d'erreur "457" "Cette clé est déjà associée à un élément de cette collection" sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If MonDico1.Exists(c.Value) Then mondico2.Add c.Value, c.Value
    2) Une fois ce problème résolu (si problème il y a vraiment) on pourrait appeler la 2ème procédure à petir de la 1ère et la 3ème à partir de la 2ème ?

  12. #12
    Invité
    Invité(e)
    Par défaut
    Re,

    J'avais commencé ma réponse précedente puis j'ai dû passer à autre chose.

    Je viens de voir que Eillon n'avait également un blocage mais pas au même endroit que moi ?

  13. #13
    Membre actif Avatar de eillon
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 117
    Par défaut
    Effectivement, si elles pouvait s'enchener, ce ne serait pas plus mal...
    On te fait travailler un peu, mais tu as l'air d'aimer ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Doublons sur les lignes details d'une commande
    Par lesaintclezio dans le forum Microsoft Dynamics
    Réponses: 2
    Dernier message: 06/08/2015, 14h42
  2. [XL-2010] Doublons sur une ligne complète
    Par moi244 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/02/2013, 18h55
  3. Réponses: 1
    Dernier message: 02/07/2008, 18h49
  4. [Access] supprimer les doublons sur deux champs
    Par nini94 dans le forum Langage SQL
    Réponses: 15
    Dernier message: 13/10/2006, 11h41
  5. Supprimer doublons sur 3 colonnes?
    Par pegase33 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/09/2006, 12h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo