Suppression de doublons sur conditions

Bonjour,

Je sollicite une nouvelle fois l’aide de la communauté Excel pour m’aider.

Je souhaite réaliser des suppressions de doublons dans Excel 2016 si certaines conditions sont réunies.

J’ai reconstitué un fichier type avec des intitulés modifiés que je vous partage en PJ ; je ne sais pas si ma demande peut être réalisé dans le menu Power Query d’Excel mais l’objectif est de faire cela de façon automatisée (sans macro) car chaque jour des nouvelles lignes viendront incrémenter le tableau de données.

Je ne suis pas contre ajouter d'autres colonnes si cela est nécessaire pour simplifier la tâche.

Le but :

  1. La page « Données » sert à insérer les nouvelles données manuellement.
  2. La page traitement comme son nom l’indique sert aux calculs et c’est ici que ma suppression devra avoir lieu.
  3. Si doublon trouvée dans une colonne précise alors recopie d’une valeur d’une cellule avoisinante dans une autre.
  4. Puis suppression du 1er doublon.

Le fichier Excel illustre ma demande (que j’espère compréhensible) avec l’explication du résultat souhaité.

Merci d’avance pour le temps accordé à m’aider.

Bonsoir à tous !

Si doublon trouvée dans une colonne précise alors recopie d’une valeur d’une cellule avoisinante dans une autre.

Des triplons peuvent exister ?

Si oui, quelle couleur doit-on retenir ? Celle liée à l'enregistrement le plus ancien ? Le précédent ?

Bonsoir JFL,

Effectivement, il n'est pas impossible que des triplons puissent exister, si c'est le cas alors c'est la valeur la plus récente.

Pour autant, pensez-vous qu'il est possible d'utiliser la valeur "DRIVE" de la colonne ACHAT ? Car si des triplons devaient exister, il y aurait X valeurs "Magasin" mais toujours que 1 valeur "Drive". Dans l'exemple, la valeur "Drive" est la plus récente, ce qui sera systématiquement le cas pour mon cas d'étude.

Bonsoir à tous de nouveau !

Dans le cas suivant, quelles sont, par champ, les valeurs à retenir pour former l'enregistrement restant ?

image

Dans l'exemple précédent, les champs à retenir sont :

Date = 25/01/2025 (car drive sur cette ligne)

Lieu = Bordeaux (idem précédent)

Achat = Drive

Produit = Banane123

Couleur = Jaune

Bonsoir à tous de nouveau !

Précision sur la couleur à retenir : elle correspond à la couleur de l'enregistrement précédent le "Drive" ou faut-il considérer que la couleur est celle de l'enregistrement le plus ancien ?

Rebonsoir,

La couleur de l'enregistrement à retenir correspond à la couleur précédent le drive.

Bonsoir à tous de nouveau !

Une approche via Power Query :

A partir du tableau structuré (tSource) inséré dans la feuille "Données", la requête retourne un tableau retraité par élimination des "doublons" selon les conditions énoncées. (enfin.... j'espère ! )

Bonjour JFL,

Merci pour votre retour, je vais tester cela dans le fichier original et vous tient informé de son déroulement.

Bonne journée.

Bonsoir JFL,

J'ai tenté de répliquer votre méthode dans mon fichier original mais je retrouve par endroit des erreurs de la sorte :

Expression.Error : L'index ne peut pas être négatif.
Détails :
    Value=[Table]
    Index=-1

J'ai l'impression que celle-ci se présente lorsqu'une recherche de doublon est effectué sur un "Produit" avec la mention magasin mais que la mention "Drive" n'est pas trouvée. En effet, lors des extractions de donnée, il est possible que la mention "Drive" ne soit pas encore présente.

Est-il possible de programmer qqch à l'image d'un SIERREUR alors tu gardes les données liées à la ligne "Magasin" ?

Bonsoir à tous !

Vous aviez précisé, me semble-t-il, que "Drive" était systématiquement présent pour des multiples de produit.

Merci de poster un jeu de données représentatif ainsi que le résultat attendu.

Et merci, aussi, d'indiquer le traitement à opérer si absence de "Drive" !

Bonsoir à tous,

Effectivement en relisant ma demande, j’ai mal spécifié mon besoin quant à la présence systématique de la valeur « Drive » puisque celle-ci peut ne pas être présente au moment de l’extraction et vous avez raison, je m’en excuse.

Toutefois, j’ai repris le fichier original que j’utilise pour mes tests en le transformant légèrement (modification des intitulés, suppression de colonnes et quelques lignes inutiles). Cela représente ainsi 200 lignes. De ce fait, en préparant ces explications j’en suis parvenu à l’idée qu’il serait plus simple de faire différemment avec quelque chose d’apparence plus facile à mettre en place. J’abandonne donc l’idée de supprimer les doublons avec Power Query bien que vous m’ayez démontré son bon fonctionnement dans le 1er cas.

Dans la nouvelle colonne « Statut » du fichier que je repartage, je souhaite réécrire la couleur de la colonne [Couleur] si et seulement si ce sont les valeurs « Bleu » ou « Orange ». Exemple :

Date

Lieu

Couleur

Achat

Produit

Statut

11/02/2025 10:14

Tokyo

Rouge

Drive

Abricot.741

11/02/2025 10:13

Delhi

Orange

MagasinC1A3

Ananas.258

Orange

11/02/2025 10:09

Delhi

Jaune

MagasinC1A3

Ananas.258

11/02/2025 10:07

Shanghai

Vert

MagasinC1A3

Avocat.963

11/02/2025 09:56

Sao Paulo

Rouge

Drive

Banane.147

11/02/2025 09:53

Mexico

Rouge

Drive

Cassis.852

11/02/2025 09:53

Mexico

Bleu

Drive

Cerise.369

Bleu

Lorsqu’un doublon de [Produit] + « Drive » + « Bleu » apparait sur la même ligne alors il faut regarder si dans les antécédents de cette référence de [Produit] il y a eu la couleur « Orange ». Attention les antécédents peuvent être sur des jours différents mais cette [Couleur] de [Statut] doit être imputée sur la ligne de la combinaison : Doublon de [Produit] + « Drive » + « Bleu ».

Exemple :

Date

Lieu

Couleur

Achat

Produit

Statut

11/02/2025 09:24

Pékin

Bleu

Drive

Goyave.479

Bleu

11/02/2025 06:46

Pékin

Vert

MagasinB1A1

Goyave.479

11/02/2025 05:29

Pékin

Jaune

MagasinB1A1

Goyave.479

11/02/2025 00:46

Pékin

Orange

MagasinB1A4

Goyave.479

Orange

11/02/2025 00:46

Pékin

Jaune

MagasinB1A4

Goyave.479

Si oui, la couleur « Orange » doit être écrite dans la colonne [Statut] de cette même ligne.

Date

Lieu

Couleur

Achat

Produit

Statut

11/02/2025 09:24

Pékin

Bleu

Drive

Goyave.479

Orange

Sinon écrire la valeur « Bleu ».

Date

Lieu

Couleur

Achat

Produit

Statut

11/02/2025 09:53

Mexico

Bleu

Drive

Cerise.369

Bleu

11/02/2025 07:33

Mexico

Vert

MagasinB1A3

Cerise.369

11/02/2025 06:28

Mexico

Jaune

MagasinB1A3

Cerise.369

11/02/2025 05:36

Mexico

Indigo

Drive

Cerise.369

11/02/2025 05:12

Mexico

Rouge

Drive

Cerise.369

Date

Lieu

Couleur

Achat

Produit

Statut

11/02/2025 09:53

Mexico

Bleu

Drive

Cerise.369

Bleu

Toutes les lignes de la feuille Données représentent des événements chronologiques, il est donc possible que l’évènement « Bleu + Drive » ne soit pas encore présent au moment de l’extraction des données mais arrivera forcément plus tard. Si tel est le cas, la formule/requête devra fonctionner lorsque la situation se produira.

La couleur « Bleu » ne peut se produire qu’avec la variable « Drive » l’inverse n’étant pas vrai.

La combinaison « Drive + Bleu » sera systématiquement présente après (d’un point de vue chronologique) la combinaison « MagasinXXXX + Orange » si celle-ci existe (elle peut ne pas exister car elle correspond à un état anormal). Quoiqu’il en soit, il y aura toujours la combinaison « Drive + Bleu » car elle fait office de clôture.

Le cas suivant n’est actuellement pas réalisé mais que se passerait-il si je souhaitais ajouter une autre couleur dans les antécédents à observer ? Par exemple la couleur « Noire » correspondrait à un nouvel état mais serait tout de même prioritaire si parmi les antécédents la couleur « Orange » était observée.

Elle se produirait avant ou après un évènement « Orange » mais toujours avant un évènement « Bleu » (comme l’Orange avant le Bleu).

La règle de priorité à insérer dans la colonne « Statut » serait sous la forme de : évènement « Noir » > évènement « Orange » > évènement « Bleu ».

L’objectif final étant de faire des TCD en fonction de [Date], [Achat], [Statut] et [Produit].

Je vous remercie encore pour le temps accordé à m’aider surtout après l’expression de ce nouveau besoin.

Bonjour à tous !

Votre demande n'est pas très explicite !

1/ Le champ "Statut" est un champ source ? ie figure-t-il dans vos données originelles ou est-il inséré par la requête ?

2/ Pouvez-vous reformuler votre conception des doublons ?
"Lorsqu’un doublon de [Produit] + « Drive » + « Bleu » apparait sur la même ligne" : difficilement concevable de trouver un doublon sur UNE ligne !

3/ Résultat attendu : Faut-il retourner l'intégralité de la base de données ou seulement les enregistrements "Drive" ?

4/Vous évoquez une chronologie mais tous les éléments de la base de données sont datés du même jour.
Une erreur du classeur exemple ?
Cette chronologie a une incidence sur les enregistrements à sélectionner ? Autrement dit, un traitement est à différencier selon que l'évènement "Drive" est postérieur ou antérieur à un évènement "Orange" ?

5/ Concernant les couleurs multiples priorisées, le statut devrait, par exemple, être sous la forme "Noire / Orange" si les deux couleurs sont présentes, et sous le forme "Orange" pour une seule couleur ?

Bonsoir,

Voici les réponses à vos questions, je n'étais pas sûr pour la 3ème alors j'ai essayé d'anticiper...

1/ Le champ « Statut » n’est pas un champ source mais une nouvelle colonne que j’ai ajoutée manuellement.

2/ Oui les doublons possibles à étudier sont dans la colonne [Produit] et c’est à ce moment qu’il faut regarder si sur l’une des lignes il y a la combinaison « Drive + Bleu ». Si oui, c’est sur cette ligne que le traitement devra s’opérer pour afficher la [Couleur] « Bleu » ou « Orange » dans la colonne [Statut].

Exemple avec « Drive + Bleu »

Date

Lieu

Couleur

Achat

Produit

Statut

11/02/2025 09:53

Mexico

Bleu

Drive

Cerise.369

Bleu

11/02/2025 07:33

Mexico

Vert

MagasinB1A3

Cerise.369

11/02/2025 06:28

Mexico

Jaune

MagasinB1A3

Cerise.369

11/02/2025 05:36

Mexico

Indigo

Drive

Cerise.369

11/02/2025 05:12

Mexico

Rouge

Drive

Cerise.369

Exemple sans « Drive + Bleu »

Date

Lieu

Couleur

Achat

Produit

Statut

11/02/2025 09:47

Dacca

Indigo

Drive

Citron.632

11/02/2025 09:38

Dacca

Rouge

Drive

Citron.632

Exemple avec « Drive + Bleu » mais avec un évènement antécédent de [Produit] ici Goyave.479

Date

Lieu

Couleur

Achat

Produit

Statut

11/02/2025 09:24

Pékin

Bleu

Drive

Goyave.479

Bleu

11/02/2025 06:46

Pékin

Vert

MagasinB1A1

Goyave.479

11/02/2025 05:29

Pékin

Jaune

MagasinB1A1

Goyave.479

11/02/2025 00:46

Pékin

Orange

MagasinB1A4

Goyave.479

Orange

11/02/2025 00:46

Pékin

Jaune

MagasinB1A4

Goyave.479

Cela deviendrait avec la requête de transformation :

Date

Lieu

Couleur

Achat

Produit

Statut

11/02/2025 09:24

Pékin

Bleu

Drive

Goyave.479

ORANGE

11/02/2025 06:46

Pékin

Vert

MagasinB1A1

Goyave.479

11/02/2025 05:29

Pékin

Jaune

MagasinB1A1

Goyave.479

11/02/2025 00:46

Pékin

Orange

MagasinB1A4

Goyave.479

Orange

11/02/2025 00:46

Pékin

Jaune

MagasinB1A4

Goyave.479

3/ Retourner l’intégralité de la base de données car il est possible qu’à l’avenir j’ai besoin d’autres données.

4/ Oui, les évènements sont chronologiques et peuvent être datés du même jour mais les heures / minutes sont différentes. Hors certains cas où l’état anormal se produit dans la foulée d’un état initial par exemple et peu par conséquent avoir les mêmes données horaires.

Pour être plus précis, il y aura toujours au moins un évènement « Drive » (« Drive + Rouge » et/ou « Drive + Indigo ») avant un évènement « Magasinxxxx + Orange » mais ces cas-là ne me sont pas utiles pour l’objectif final.

Date

Lieu

Couleur

Achat

Produit

Statut

11/02/2025 10:13

Delhi

Orange

MagasinC1A3

Ananas.258

Orange

11/02/2025 10:09

Delhi

Jaune

MagasinC1A3

Ananas.258

11/02/2025 05:38

Delhi

Indigo

Drive

Ananas.258

11/02/2025 05:28

Delhi

Rouge

Drive

Ananas.258

L’évènement « Drive » déclenchant la comparaison est un évènement « Drive + Bleu » qui se produira toujours après un évènement « Magasinxxxx + Orange » si ce dernier a lieu car il peut ne pas arriver. Les combinaisons « Drive + Orange » et « Magasinxxxx + Bleu » sont impossible.

En espérant que cela puisse mieux vous aider.

Bonsoir à tous !

Version 2 !

Cette proposition va-t-elle dans la bonne direction ?

Le tableau retourné est basé sur les seules données du tableau structuré tDonnées2.

Le point 5 de mon message précédent n'est pas intégré (en attente de votre réponse).

Bonsoir,

Oui, je viens de regarder cela et cette proposition va dans le bon sens (à tester néanmoins sur les valeurs originelles et quand j'aurais un plus gros jeu de données, ce qui n'est pas le cas actuellement).

Pour le 5/, je ne l'avais pas vu désolé.

Si les deux couleurs "Noire" et "Orange" sont présentes, n'afficher que "Noire".

Si "Noire" est seule et pas de "Orange" détectée alors afficher "Noire" quand même.

L'évènement "Noir" peut lui aussi ne jamais arriver.

Bonjour à tous !

Version 3.....à tester :

Bonjour à tous,

Je reviens vers vous après quelques jours à tester la dernière version du fichier et cela correspond à mon besoin.

Toutefois j’ai remarqué que lors de mes extractions de données (manuelle pour l’instant) il se peut que je récupère certaines lignes complètes en doublon avec les mêmes informations dans chaque cellule. Chose que j’ai pu m’apercevoir qu’avec un plus grand jeu de données et l’incohérence de mes résultats dans un TCD.

Exemple :

11/02/2025 06:57

Buenos Aires

Indigo

Drive

Mangue.480

11/02/2025 06:53

Buenos Aires

Rouge

Drive

Mangue.480

11/02/2025 06:53

Buenos Aires

Bleu

Drive

Noixdecajou.693

11/02/2025 06:53

Buenos Aires

Rouge

Drive

Mangue.480

11/02/2025 06:53

Buenos Aires

Bleu

Drive

Noixdecajou.693

11/02/2025 06:53

Jakarta

Rouge

Drive

Longane.735

11/02/2025 06:53

Jakarta

Bleu

Drive

Olive.129

Est-il possible de rajouter une suppression de doublon dans la requête ?

J’ai essayé de créer une autre colonne avec une concaténation de certaines informations puis suppression de doublon mais avec la création de la colonne STATUT cela ne va pas.

De plus pouvez-vous m’expliquer comme la requête fonctionne car je ne comprends pas très bien certains éléments.

Merci et bonne journée.

Bonjour à tous !

Pour supprimer les doublons, il vous faut, après l'étape "Source", insérer le traitement suivant :

= Table.Distinct(Source)

Concernant la modélisation, elle fonctionne ainsi :

  1. Etape "Source" : Lecture de la source (tableau structuré Excel)
  2. Suppression des doublons (nouvelle étape !)
  3. Etape "Statut" : Insertion du champ "Statut" en lien avec la table de correspondance "tCouleurs"
  4. Etape "GB" : Elle vise à modifier le statut du "Drive" en intégrant la couleur (dans l'ordre prioritaire souhaité : cf table de correspondance).
  5. Etape "Final" : Création d'une table à partir des enregistrements de l'étape précédente.
  6. Etape "TypeDH" : Modification du type du champ "Date".
Rechercher des sujets similaires à "suppression doublons conditions"