Dédoublonner en compléter les cellules de plusieurs lignes

Coordinatrice Messages postés 1 Statut Membre -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je travaille actuellement à la prochaine implémentation d'une base de données dans un crm.
je viens d'assembler 8 bases excel de formats différents et qui représente 70000 lignes et va jusqu'à la colonne CB.
j'ai plusieurs lignes en doublons mais toutes les colonnes ne sont pas remplies sur une même ligne.
Est-ce qu'une macro pourrait m'aider à dédoublonner mon fichier en conservant par défaut l'origine d'un de mes 8 fichiers (colonne A) et en conservant la ligne (complétée par les doublons si vides)
L'explication est difficile je suis désolée mais si vous pouvez m'aider et me faire gagner du temps car je suis partie pour tout faire à la main :(

merci d'avance pour votre aide

1 réponse

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 785
     
    Bonjour,

    Si j'ai bien compris, la colonne A contient la référence et tu as concaténé tes 8 fichiers en décalant les autres colonnes et donc en laissant vide les cellules dont les infos proviennent des autres fichiers.

    Essaies cette macro :
    Option Explicit
    Option Private Module

    Public Sub Dédoublonner()
    Dim rng As Range
    Dim cel As Range
    Dim val As Variant
    Dim col As Long
    Dim p°L As Long
    Dim d°L As Long
    Dim ctr As Long

    Set rng = ActiveSheet.Range("A1").CurrentRegion
    Set cel = rng.Cells(2, 1)
    rng.Sort Key1:=cel, Order1:=xlAscending, Header:=xlYes

    Do While Not IsEmpty(cel.Value)
    val = cel.Value
    For col = 1 To rng.Columns.Count - 1
    ctr = 0
    val = Null
    Do While cel.Offset(ctr).Value = cel.Value And cel.Offset(ctr).Row <= rng.Rows.Count
    If cel.Offset(ctr, col).Formula <> "" Then
    val = cel.Offset(ctr, col).Value
    Exit Do
    End If
    ctr = ctr + 1
    Loop
    ctr = 0
    If Not IsEmpty(val) Then
    Do While cel.Offset(ctr).Value = cel.Value And cel.Offset(ctr).Row <= rng.Rows.Count
    cel.Offset(ctr, col).Value = val
    ctr = ctr + 1
    Loop
    End If
    Next
    Set cel = cel.Offset(ctr)
    Loop

    End Sub

    Il ne restera plus qu'a éliminer les doublons (avec un filtre élaboré).
    0