Dédoublonnage croustillant

  • Initiateur de la discussion Initiateur de la discussion excel_is_amazing
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

excel_is_amazing

Guest
Bonjour les experts,

J'ai été impressionné par le nombre et la qualité des réponses. Du coup, je me lance.
Le soucis est le suivant, j'ai un fichier avec 240 000 lignes et un vingtaines de colonnes.

Dans ce fichier, j'ai une clef primaire, l'adresse email. Mon soucis est le suivant :
je peux avoir une ligne avec juste l'email, l'email avec 3/4 champs remplis et une dernière avec l'email plus beaucoup de champs remplis.

Ce que je cherche à faire c'est éliminer les doublons tout en gardant la ligne la plus renseignée (celle contenant le plus de d'infos). Par exemple :

M / Gates / bill / / / PDG / non / FR / bill.gates@microsoft.com
M / Gates / bill / Microsoft / edition logiciel / PDG / non / FR / bill.gates@microsoft.com
/ / / / / / non / FR / bill.gates@microsoft.com

Je cherche à garder la seconde ligne (la plus renseignée).
Je peux avoir un, deux, trois ou plus de doublon sur la clef Email.

Je vous ai joint un exemple.

l'idée, c'est donc de toujours garder une seule ligne, celle avec le plus de renseignement.
 

Pièces jointes

Re : Dédoublonnage croustillant

Bonsoir, et bienvenue sur le forum.


En attendant d'autres pistes :
le nombre de caractères de la concaténation des 20 colonnes en U2 par exemple à recopier ves le bas :
=NBCAR(A2&B2&C2&D2&E2&F2&G2&H2&I2&J2&K2&L2&M2&N2&O2&P2&Q2&R2&S2&T2)
vous donnera, pour chaque nom, la ligne la plus remplie.

Un tri d'abord sur le nom, puis en 2° clé sur ce nombre placera la ligne de chaque nom la plus remplie en tête.
 
Re : Dédoublonnage croustillant

Bonjour excel_is_amazing, Salutations Victor21,

Une proposition par macro qui ne devrait pas trop trop mouliner, vu la nombre de lignes à traiter... 😛
VB:
Sub test()
Dim c As Range, nLig As Long,  t#, x#
Application.ScreenUpdating = False
nLig = Split(ActiveSheet.UsedRange.Address, "$")(4)
With Range("IV2:IV" & nLig)
  .FormulaR1C1 = "=R[-1]C+IF(RC11=R[-1]C11,0,1)"
  .Value = .Value
End With
For t = 1 To Application.Max(Range("IV:IV"))
  Set Zonerech = Range("A" & Application.Match(t, Range("IV:IV"), 0) & ":T" & Application.Match(t, Range("IV:IV"), 0) + Application.CountIf(Range("IV:IV"), t) - 1)
    For x = 1 To 20
      Set c = Intersect(Columns(x), Zonerech)
      With Cells(nLig + t, x)
        .FormulaArray = "=MIN(IF(NOT(ISBLANK(" & c.AddressLocal & ")),ROW(" & c.AddressLocal & ")))"
        If .Value > 0 Then .Value = Cells(.Value, x) Else .Value = ""
      End With
    Next x
Next t
Range("A2:T" & nLig).Delete xlUp
Range("IV:IV").Clear
Application.ScreenUpdating = True
End Sub
 

Pièces jointes

Dernière édition:
Re : Dédoublonnage croustillant

Bonjour à tous,

@Victor;
je préfèrerais utiliser la fonction = nombredecolonneparligne - NB.VIDE qui donnera le nombre de cellules non-vides par ligne

si dans une ligne, il y a 10 cellules remplies avec un seul caractère
et que dans une autre ligne il y a une seule cellule remplie avec 20 caractères

la fonction NBCAR considérera que c'est cette seconde ligne qui est la plus complète
tandis qu'avec NB.VIDE, le résultat est plus proche de la réalité

à+
Philippe

Edit: Bonjour Softmama
 
Re : Dédoublonnage croustillant

Bonjour,

Une piste avec l'exemple joint.

Le résultat s'affiche dans une nouvelle feuille et laisse intacte la feuille source.
Il conviendra de changer la constante FEUILLE_SOURCE à votre usage.
Si cela fonctionne, je serais intéressé de savoir combien dure le traitement pour 240.000 lignes.
Merci de me le faire savoir.

A plus.
 
Dernière édition:
Re : Dédoublonnage croustillant

wow, ok, vous êtes impressionnants.
Je dois avouer que j'ai fréquenter pas mal de forums mais avoir 3 réponses qualifiées à un problème croustillant en moins de 24h, c'est impressionnant... Vraiment.

Bon je vais tester tout ca et vous dire les résultats en terme de timing sur mon I7/4Go/Win7.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

V
Réponses
2
Affichages
2 K
VOILLOT
V
L
Réponses
19
Affichages
3 K
lord_2009
L
F
Réponses
3
Affichages
17 K
lealea92
L
2
Réponses
5
Affichages
14 K
21did21
2
H
Réponses
4
Affichages
2 K
hobine
H
A
Réponses
13
Affichages
2 K
afchartier
A
E
Réponses
6
Affichages
2 K
estelle.s
E
Retour