Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Supprimer les doublons (avec 4 colonnes) et ne garder que la ligne la plus ancienne (colonne A)

Loïc DUBOIS

XLDnaute Occasionnel
Bonjour à tous,

J'ai besoin de faire une manipulation me permettant de supprimer les doublons selon 4 colonnes et ne garder que la ligne avec la date la plus ancienne.

Je m'explique, j'ai un fichier excel avec environ 21k lignes. Parmis ces lignes se trouve des doublons. Or je veux les supprimer en ne gardant que le doublon le plus ancien. Je caractérise les doublons sur plusieurs colonnes. Un doublon est avéré lorsque la colonne "Année" (B), "Personne" (D), "Fonction" (H), RIC (L).

Pour résumer, pouvez-vous m'aider à supprimer les doublons lorsque les 4 colonnes ci-dessus sont identiques et ne garder uniquement la ligne la plus ancienne (colonne A) ?

Je vous joint un fichier exemple : dans ce fichier j'ai des doublons avec "Amazon" (colonne B, D, H et L identiques mais je souhaite ne garder que la ligne avec la date la plus ancienne (colonne A).

Je vous remercie par avance,

Bien cordialement,

Loïc DUBOIS
 

Pièces jointes

  • test pour doublon .xlsx
    53.5 KB · Affichages: 16

Amilo

XLDnaute Accro
Re, Bonjour @chris ,

@Loïc DUBOIS vous avez indiqué Excel 2016 dans votre profil alors que vous semblez utiliser Office 365,
Comme indiqué par chris, voyez dans le 1er bouton "Obtenir des données", si vous avez une option nommée "A partir d'un tableau ou d'une plage"

Sinon, à défaut qu'y a t-il derrière le bouton "Données de l'image" en cliquant sur la petite flèche à droite ?
Cela peut varier selon les versions d'Excel ou de la taille de l'écran

Cordialement
 
Dernière édition:

Amilo

XLDnaute Accro
Re,
Cela fonctionne également de cette manière en faisant "Charger" et vous allez arriver à la fenêtre Power query pour les manipulations mais sélectionnez au préalable la feuille contenant la plage avec les 21k lignes

Sinon comme demandé dans mon précédent message, qu'y a-t-il derrière le bouton "Données de l'image" lorsque vous cliquez sur la petite flèche à droite ?

Cordialement
 

chris

XLDnaute Barbatruc
RE

Même en pliant, sur 365 il me reste des micro boutons entre Obtenir des données et Actualiser tout : on dirait un ruban bricolé avec ce bouton image qui n'a rien à faire dans données a priori

PC ou MAC ?
 

Loïc DUBOIS

XLDnaute Occasionnel
Voici ce qu'il y a dans "Données de l'image"

Malheureusement lorsque je sélectionne la feuille puis que je clique sur "charger", cela me génère directement le tableau sans que j'ai pu faire quoi que ce soit...
 

Amilo

XLDnaute Accro
@Loïc DUBOIS ,

Finalement vous êtes sur Mac et à ma connaissance, sauf erreur de ma part, Power query ne fonctionne pas dans cet environnement.
Je n'ai pas Mac pour vérifier et tester mais je suis surpris de voir le bouton "Obtenir des données (Power query")
Je crains que ce ne soit pas possible à moins que Excel sous Mac, ait ajouté cette fonctionnalité depuis peu !

Cordialement
 

Amilo

XLDnaute Accro
Re,
@Loïc DUBOIS ,
J'ai comparé mes options sur d'Excel 2019 avec les vôtres,
Il vous manque l'option "Transformer les données", cette dernière permet de faire toutes les manipulations de transformation réalisées sur la vidéo (voir image en pièce jointe)
Je doute beaucoup que cela soit possible sous Mac.

Cordialement
 

Pièces jointes

  • Obtenir des données_Power query.jpg
    168.9 KB · Affichages: 24
Dernière édition:

Loïc DUBOIS

XLDnaute Occasionnel
Effectivement, vous avez raison les manipulations ne sont pas possibles sur MAC, j'ai pu le faire sur un autre PC.

Tout à très bien fonctionné. Juste une petite question. J'ai fais la manipulation avec mon jeu de données (21k). Cependant lorsque j'ai fais l'étape à 1min59 de la vidéo (voir screen) : "charger plus".

J'ai eu un message comme quoi j'avais atteint la limite des 1000 analyses. Pensez qu'il y ai eu une incidence sur mon résultat ? (Sachant qu'après la manipulation je suis passé de 21078 données à 19700 environ) ?

Merci d'avance,

Loïc
 

chris

XLDnaute Barbatruc
Bonjour

Sauf erreur de ma part la dernière révision 365 MAC est compatible PowerQuery

Dans des révisions plus anciennes de 365, il y avait une compatibilité limitée utiliser VBA pour écrire le M par exemple.

N'ayant pas de Mac je n'ai pas plus de détails mais bien vérifier que c'est la dernière révsion
 

Amilo

XLDnaute Accro
Re,
Bonjour @Jean-Eric ,

@Loïc DUBOIS ,

A ma connaissance, il n'y a pas aucune d'incidence sur le résultat, mais pas pratique si vous deviez sélecrionner certain(s) critère(s) qui n'apparaissent pas dans la fenêtre de sélection.

Mais il me semble que vous pouvez aller au delà des 1000 lignes avec le bouton "Ascenceur", une fois en bas de la liste mais cela prend du temps à afficher jusqu'en bas, sauf en passant par la zone de "Recherche".

A voir, si le lien "Charger plus" disparaît après un voire plusieurs "Clic"ou non.
Et il me semble que le message dont vous parlez, reste en permanence.

Cordialement
 
Dernière édition:

Amilo

XLDnaute Accro
chris, effectivement,
Devant le succès grandissant de Power query, j'avais en mémoire que Power query pourrait probablement être intégré un jour sous Mac.
Peut-être que c'est le cas avec la dernière version....!

Cordialement
 

job75

XLDnaute Barbatruc
Bonjour à tous,

Une solution VBA très classique dans le fichier joint avec cette macro dans le code de la feuille "Résultat" :
VB:
Private Sub WorkSheet_Activate()
Dim d As Object, tablo, ncol%, i&, x$, n&, resu(), a, nn&, j%
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
With Sheets("Feuil1") 'à adapter
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    tablo = .Range("A1:AW" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
ncol = UBound(tablo, 2)
For i = 2 To UBound(tablo)
    x = tablo(i, 2) & Chr(1) & tablo(i, 4) & Chr(1) & tablo(i, 8) & Chr(1) & tablo(i, 12)
    If d.exists(x) Then If tablo(i, 1) < tablo(d(x), 1) Then d.Remove x  'teste la date
    If Not d.exists(x) Then d(x) = i 'mémorise la ligne
Next i
'---tableau des résultats---
n = d.Count
If n Then
    ReDim resu(1 To n, 1 To ncol)
    a = d.items
    For i = 1 To n
        nn = a(i - 1)
        For j = 1 To ncol
            resu(i, j) = tablo(nn, j)
    Next j, i
End If
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A2] '1ère cellule de restitution, à adapter
    If n Then .Resize(n, ncol) = resu
    .Offset(n).Resize(Rows.Count - n - .Row + 1, ncol).ClearContents 'RAZ en dessous
End With
Columns.AutoFit 'ajuste les largeurs
End Sub
Elle se déclenche quand on active la feuille.

Elle est très rapide car elle utilise des tableaux VBA et le Dictionary.

Edit : ah je vois que vous êtes sur MAC, le Dictionary n'est pas accepté

A+
 

Pièces jointes

  • test pour doublon(1).xlsm
    66.1 KB · Affichages: 1
Dernière édition:

ChTi160

XLDnaute Barbatruc
Bonsoir le Fil, le Forum

Une autre approche( qui fait remonter plus de lignes à voir donc!) Cela , à partir du fichier de Job75

Bonne fin de Soirée
Jean marie
 

Pièces jointes

  • test pour doublon(Chti160).xlsm
    75.4 KB · Affichages: 0
  • Loic-1.gif
    631.5 KB · Affichages: 30
Dernière édition:

Discussions similaires

Réponses
26
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…