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

Fermé
Coordinatrice Messages postés 1 Date d'inscription vendredi 1 novembre 2013 Statut Membre Dernière intervention 1 novembre 2013 - 1 nov. 2013 à 11:26
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 1 nov. 2013 à 21:23
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
A voir également:

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 778
1 nov. 2013 à 21:23
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