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 :

Suppression des doublons


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Par défaut Suppression des doublons
    Salut,
    j'ai un souci avec une macro vba excel.
    Je veux supprimer les doublons de mon fichier excel mais de la manière suivante:
    je dois comparer les données des cellules d'une seule colonne, si 2 cellules sont identiques alors il doit me supprimer toute la ligne.
    Voici mon code mais je n'arrive pas à l'éxécuter, à chaque fois que je l'éxecute, je suis obligé d'arrêter le processus excel pour continuer à travailler sur mon poste.
    Je crois qu'il y a une erreur quelque part. Mais je n'arrive pas à la trouver. Est ce que quelqu'un peut m'aider?
    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
    Sub supprimeDoublons()
    MaCellule= "B5"
    Range(MaCellule).Select 
    Activecell.currentregion.Sort Key1:=Range(MaCellule), Order1:=xlAscending, Header:=xlYes
    donnee1 = ActiveCell
    ActiveCell.Offset(1, 0).Select
    While ActiveCell <> "" 
    If ActiveCell = donnee1 Then 
    ActiveCell.EntireRow.Delete 
    ActiveCell.Offset(-1, 0).Select 
    donnee1 = ActiveCell
    ActiveCell.Offset(1, 0).Select 
    End If 
    Wend 
    End Sub
    Merci d'avance

  2. #2
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,

    essaie comme ça pour voir.
    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
    Sub supprimeDoublons()
     
    MaCellule= "B5"
    Range(MaCellule).Select 
    Activecell.currentregion.Sort Key1:=Range(MaCellule), Order1:=xlAscending, Header:=xlYes
     
    ActiveCell.Offset(1, 0).Select
    i=0
    While range(macellule).offset(i,0) <>""
        with range(macellule)
            if .offset(i,0).value=.offset(i+1,0) then .offset(i+1,0).entirerow.delete
            i=i+1
        end with
    Wend 
     
    End Sub

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Par défaut
    Il me met une erreur de débogage:
    Erreur d'éxecution 1004 : erreur définie par l'application ou par l'objet
    Et la ligne est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While Range(macellule).End(xlDown).Offset(I, 0) <> ""

  4. #4
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Par défaut
    Merci pour vos réponse.
    Pour les 2 derniers bouts de code de Le Pierre et Mayekeul, j'arrive à les éxecuter mais j'ai pas le résultat que je veux.
    Je vous donne un exemple:
    j'ai fichier excel qui contient plusieurs, dans la colonne B de ce fichier, j'ai des doublons, moi je veux axer ma suppression de doublons sur cette colonne, si il y a des doublons sur la colonne B, il supprime toute la ligne.

  5. #5
    Membre expérimenté
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Par défaut
    bonjour

    d'après ton code initial tu supprimais toute la ligne.

    Pour ne supprimer qu'une cellule remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.EntireRow.Delete
    par :
    à plus

  6. #6
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Par défaut
    Bonjour,
    Merci pour vos réponses.

  7. #7
    Membre expérimenté
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Par défaut
    bonjour

    essaye ce code rectifié :
    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
    Sub supprimeDoublons()
        MaCellule = "B5"
        Range(MaCellule).Select
        ActiveCell.CurrentRegion.Sort Key1:=Range(MaCellule), Order1:=xlAscending, Header:=xlYes
        donnee1 = ActiveCell
        While ActiveCell <> ""
            ActiveCell.Offset(1, 0).Select
            If ActiveCell = donnee1 Then
                ActiveCell.EntireRow.Delete
                ActiveCell.Offset(-1, 0).Select
                donnee1 = ActiveCell
            Else
                donnee1 = ActiveCell
            End If
        Wend
    End Sub
    à plus

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/07/2009, 11h06
  2. suppression des doublons
    Par sucreMan dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 03/10/2007, 13h12
  3. [SQL] Suppression des doublons d'un champs SQL
    Par fabien14 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/05/2007, 15h28
  4. problème avec la suppression des doublons dans arraylsit
    Par ulysse031 dans le forum Langage
    Réponses: 13
    Dernier message: 04/03/2007, 13h52
  5. suppression des doublons
    Par LuckySoft dans le forum Requêtes
    Réponses: 9
    Dernier message: 04/08/2006, 13h29

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