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

Macros et VBA Excel Discussion :

Supprimer lignes doublons


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 20
    Par défaut Supprimer lignes doublons
    Bonjour à tous,

    J'ai un tableau avec 18 colonnes (de A à R) avec un nombre de lignes illimité

    Je voudrai supprimer les lignes en doublons avec les meme données dans les colonnes A à R mais en gardant une des lignes

    Sur un autre forum, on m'a donné ce code qui fait bien ce que je veux mais dès qu'il y a trop de lignes il plante ou change l'ordre des lignes (la ligne 1 arrive en dernier!!)

    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
    Sub Doublons()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim DL As Long
        On Error Resume Next
     
        Application.ScreenUpdating = False
     
        'toute la zone utilisée sur la feuille
       Set Plage = ActiveSheet.UsedRange
     
        'cellule où coller la plage filtrée
       Set Cel = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
     
        'filtre sans doublons. Attention seuls les doublons strictement identiques
       'seront supprimés, si une des cellules dans deux lignes qu'ont pense identiques
       'est différente, la ligne n'est pas considérée comme doublon
       Plage.AdvancedFilter xlFilterCopy, , Cel, True
     
        'supprime la page originelle
       Plage.Delete
     
        Application.ScreenUpdating = True
     
    End Sub
    Pouvez vous m'aider svp soit en optimisant le code ou en me proposant une autre solution

    Ci joint un extrait du fichier (nb de lignes illimités), les lignes en rouge sont en doublons

    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Ci joint un extrait du fichier (nb de lignes illimité), les lignes en rouge sont en doublons
    Dans le code qui t’a été donné, il t’a été précisé que seules les lignes strictement identiques sont considérées comme doublon. Dans ta feuille, les lignes en rouge ne sont pas toutes en doublons.
    De plus, ton tableau s’arrête à la colonne P (et non pas R).
    Tu peux tester le code suivant (avec les réserves citées précédemment)
    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
    Sub Doublons()	
    Dim Plage As Range
    Dim DerCel As Range
    On Error Resume Next
        Application.ScreenUpdating = False
        With ActiveSheet
            'Dernière cellule renseignée de la colonne A
            Set DerCel = .Cells(Rows.Count, 1).End(xlUp)
            'Définition de la plage concernée par le filtrage avancé
            Set Plage = .Range(.Cells(1, 1), .Cells(DerCel.Row, 18))
            'filtre sans doublons. Attention seuls les doublons strictement identiques
            'seront supprimés, si une des cellules dans deux lignes qu'ont pense identiques
            'est différente, la ligne n'est pas considérée comme doublon
            Plage.AdvancedFilter xlFilterCopy, , DerCel.Offset(1, 0), True
            'suppression de la page originelle
            Plage.Delete
        End With
        Application.ScreenUpdating = True
        Set Plage = Nothing: Set DerCel = Nothing
    End Sub
    Cordialement.

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 20
    Par défaut
    Bonjour gFZT82 et merci pour ton aide

    Dans le code qui t’a été donné, il t’a été précisé que seules les lignes strictement identiques sont considérées comme doublon. Dans ta feuille, les lignes en rouge ne sont pas toutes en doublons
    Je me suis peut etre mal exprimé mais je te confirme ce que j'ai dis
    Par exemple la ligne 2 à en doublon la ligne 4
    la ligne 5 à en doublon la ligne 6 etc.....
    Et puis le code fait bien ce que je veux c'est juste qu'il plante quand il y a trop de lignes

    Pour les colonnes je te confirme que c'est bien jusqu'a la colonne R c'est juste que c'est des données confidentielles

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    O.K. mais quand tu auras supprimé les doublons, il restera des lignes rouges.
    Autrement dit, les lignes en rouge ne sont pas toutes des doublons (question de vocabulaire je te l'accorde ).

    As-tu testé le code ?

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 20
    Par défaut
    J'ai fait 2 test :

    l'un sur le fichier que je t'ai envoyer avec toutes mes colonnes et toutes mes lignes (environ 8500) mais sans formules ni macro ou code : Sa marche nikel en moins de 5 sec respect!!!!

    Par contre sur le fichier original avec tout (lignes, colonnes, formules, macro...):Sa plante

    C'est du au reste de la programmation???

  6. #6
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Le premier point à vérifier, c'est le nombre de lignes de ton fichier original.

    Tu dis que ça plante, mais tu ne précises pas s'il s'agit d'une erreur (auquel cas tu dois avoir un libellé, n° d'erreur et n° de ligne de blocage) ou d'un défaut de fonctionnement.

Discussions similaires

  1. [XL-2007] supprimer lignes doublons
    Par pierrof dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/11/2011, 21h13
  2. [XL-2003] Supprimer ligne doublon
    Par xoum89 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/07/2010, 12h00
  3. Supprimer lignes avec doublons avec 2 conditions
    Par dan-12 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 17/03/2008, 09h44
  4. Réponses: 2
    Dernier message: 14/06/2007, 22h24
  5. [Conception] Supprimer des lignes doublons.
    Par elkion dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/12/2006, 18h04

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