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 :

Macro VBA pour supprimer doublons ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Points : 71
    Points
    71
    Par défaut Macro VBA pour supprimer doublons ?
    Bonjour,

    Je recherche savoir comment faire avec VBA pour supprimer les doublons de mon listing excel ?

    Mon fichier fait 7 colonne et l'information en boublons et dans la colonne A.

    Si un code existe comment puisse-je faire ?



    Merci de votre aide svp.

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    sur le site ou sur le forum tu trouveras facilement des conseils, notamment dans les tutos, Tu es sur excel 2007, alors la gestion des doublons est prévue, dans l'onglet "Données.
    Bon courage

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Points : 71
    Points
    71
    Par défaut
    je recherche la méthode en VBA...

    qq connait comment faire ?

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour

    Oui, l'enregistreur de macros d'Excel. Probablement tous les excelliens sont passés par là un jour ou l'autre.

  5. #5
    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
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Pour t’initier à VBA, tu peux utiliser l’enregistreur de macro.
    Voici un exemple de code enregistré avec une opération de suppression des doublons sur les colonnes A à G, celle contenant les doublons étant la colonne A et les colonnes n'ayant pas d'en-tête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Macro1()
        Columns("A:G").Select
        ActiveSheet.Range("$A$1:$G$21").RemoveDuplicates Columns:=1, Header:=xlNo
    End Sub
    Pour plus de renseignements :
    Initiation au VBA

    Cordialement.

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu
    Bonjour a tous

    bien que la methode remove duplicate excel2007 soit tres bien je ne l'utilise presque jamais car si le fichier est utilisé avec une version anterieure a 2007 c'est la catastrophe

    l'utilisation de variables tableaux dans 2 boucles imbriquée voir le scripting dictionary me semble mieux indiqué
    tu trouvera plusieur exemples sur le site et dans les contributions tu trouvera aussi divers exemples ilustrants cette methode dont la mienne


    au plaisir

  7. #7
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Sinon, un exemple simple, à adapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Option Explicit
    Dim Dl As Integer, Ws As Worksheet
    Sub Test_doublons()
    Set Ws = Sheets("Feuil1")
       Dl = Ws.Range("a" & Ws.Rows.Count).End(xlUp).Row
       IdentifieDoublons Ws.Range("B2:B" & Dl)
    End Sub
    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
    Sub IdentifieDoublons(Plg As Range)
    Dim Un As Collection, cel As Range
    Set Un = New Collection
    On Error Resume Next
    With Ws
       For Each cel In Plg
          If cel <> "" Then
             Un.Add cel, CStr(cel)
             If Err <> 0 Then
                .Range("A" & cel.Row, "b" & cel.Row).Interior.ColorIndex = 6 ' ou .Clear ou .ClearContents etc.
             End If
                'Efface toutes les valeurs de l'objet Err.
             Err.Clear
          End If
       Next cel
    End With
    Set Un = Nothing
    End Sub

  8. #8
    Invité
    Invité(e)
    Par défaut Bonjour, regarde ça
    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
    Function Highlander(Init As Boolean, ParamArray Plage()) As Boolean
    '..................................................
    'La méthode Highlander, il ne peut en rester qu'un.
    'Retourne True si doublon.
    '..................................................
     
    Static CollectDoublon As Collection
    Dim T As String
    Dim PlageIndex As Long
    Dim myPlage As Range
    Dim Col As Integer
    If Init = False Then
    Init = True
       Set CollectDoublon = Nothing
       Set CollectDoublon = New Collection
    End If
     
     
    T = "T"
    For PlageIndex = 0 To UBound(Plage)
       Set myPlage = Plage(PlageIndex)
       For Col = 1 To myPlage.Columns.Count
        T = T & "_" & myPlage(1, Col)
       Next
    Next
    On Error Resume Next
    CollectDoublon.Add T, T
    If Err <> 0 Then Highlander = True
    On Error GoTo 0
    End Function
    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
    Sub test()
    Dim Init As Boolean
    Dim MyRange As Range
    Dim L As Long
    Set MyRange = ActiveSheet.UsedRange
    Debug.Print "Sur une colonne"
    For L = 1 To MyRange.Rows.Count
        Debug.Print Highlander(Init, MyRange(L, 1))
    Next
    Init = False
    Debug.Print "********************"
    Debug.Print "Sur une plage colonne"
    For L = 1 To MyRange.Rows.Count
        Debug.Print Highlander(Init, ActiveSheet.Range(MyRange(L, 1), MyRange(L, 2)))
    Next
    Init = False
    Debug.Print "********************"
    Debug.Print "Sur 2 colonnes"
    For L = 1 To MyRange.Rows.Count
        Debug.Print Highlander(Init, MyRange(L, 1), MyRange(L, 3))
    Next
    Init = False
    Debug.Print "********************"
    Debug.Print "Sur deux plage colonne"
    For L = 1 To MyRange.Rows.Count
        Debug.Print Highlander(Init, ActiveSheet.Range(MyRange(L, 1), MyRange(L, 2)), ActiveSheet.Range(MyRange(L, 3), MyRange(L, 4)))
    Next
    Init = False
    Debug.Print "********************"
    Debug.Print "Sur une plage colonne"
    For L = 1 To MyRange.Rows.Count
        If Highlander(Init, ActiveSheet.Range(MyRange(L, 1), MyRange(L, 2))) = True Then MsgBox "Doublon"
    Next
    End Sub
    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 SupprimerDoublon()
    Dim Init As Boolean
    Dim MyRange As Range
    Dim L As Long
    Dim I As Long
    Dim lignes() As Long
    Set MyRange = ActiveSheet.UsedRange
    Debug.Print "Sur 7 colonnes"
    For L = 1 To MyRange.Rows.Count
       If Highlander(Init, ActiveSheet.Range(MyRange(L, 1), MyRange(L, 7))) = True Then
        ReDim Preserve lignes(I)
        lignes(I) = L
        I = I + 1
       End If
    Next
     
    For I = UBound(lignes) To 0 Step -1
        MyRange(lignes(I), 1).EntireRow.Delete
    Next
    End Sub

Discussions similaires

  1. [PPT-2007] Macro VBA pour supprimer plusieurs liens hypertextes en même temps
    Par thp67 dans le forum VBA PowerPoint
    Réponses: 0
    Dernier message: 28/10/2014, 18h23
  2. Réponses: 0
    Dernier message: 28/10/2014, 15h13
  3. [XL-2010] Macro VBA pour supprimer des caractère situés après une valeur
    Par Guillaume_PMO dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/03/2011, 17h06
  4. [SQL Serveur 2K] Procédure pour Supprimer doublons
    Par Vesta dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 29/05/2006, 11h32
  5. [VBA-E] Macro VBA pour personaliser mon .doc depuis mon .xls
    Par korntex5 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/05/2006, 16h01

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