XL 2016 Doublons

Guismo33

XLDnaute Occasionnel
Bonjour a tous,

Fichier joint, je recherche a enlever les doublons sur les 5 colonnes et inscrire se qui reste
dans une autre colonne.

Bien à vous
 

Pièces jointes

  • Doublons.xlsx
    10.3 KB · Affichages: 26

gosselien

XLDnaute Barbatruc
Bonjour,

en VBA :
VB:
Option Explicit
Sub ListeSansDoublons()
Dim d1
Dim a(), c
Set d1 = CreateObject("Scripting.Dictionary")
a = Feuil1.[B2].CurrentRegion.Value
For Each c In a
    d1(c) = ""
Next c
[K5].Resize(d1.Count, 1) = Application.Transpose(d1.Keys)
End Sub
 

CISCO

XLDnaute Barbatruc
Bonjour

Pour avoir la liste sans doublon, on peut aussi faire avec
Code:
INDEX(plage;ENT(MAX(SI(NB.SI(J$1:J1;plage)=0;LIGNE(plage)+COLONNE(plage)/1000)))-1;1000*MOD(MAX(SI(NB.SI(J$1:J1;plage)=0;LIGNE(plage)+COLONNE(plage)/1000));1)-1)
en matriciel dans J2.

Le principe :
Avec LIGNE(plage)+COLONNE(plage)/1000 on repère la position de toutes les cellules de la plage (sous la forme 5,003 pour la cellule C5) : la partie entière donne le n° de la ligne, la partie décimale, le n° de la colonne.
Avec SI(NB.SI(J$1:J1;plage)=0, on ne garde que les contenus des cellules pas encore cités dans le haut de la colonne J, au dessus de la cellule active.
Avec MAX(SI(NB.SI(J$1:J1;plage)=0;LIGNE(plage)+COLONNE(plage)/1000)), on ne garde que la référence de la cellule intéressante placée le plus bas et le plus à droite.
Avec ENT(MAX(SI(NB.SI(J$1:J1;plage)=0;LIGNE(plage)+COLONNE(plage)/1000)))-1 renvoie donc le n° de la ligne le plus grand contenant une cellule intéressante (-1 à la fin car la plage commence en ligne 2, et parcequ'on utilise INDEX(plage).
MOD(x ;1) renvoie la partie décimale du nombre x donc 1000*MOD(MAX(SI(NB.SI(J$1:J1;plage)=0;LIGNE(plage)+COLONNE(plage)/1000));1)-1 renvoie le n° de la colonne le plus grand contenant une cellule intéressante (-1 car la plage commence sur la colonne B et parcequ'on utilise INDEX(plage...)

Ensuite, on utilise INDEX(plage;n° de ligne choisi;n° de colonne choisi).

Dans ton cas, pour ce qui est de ne garder qu'une partie de la paire, et pas son inverse, c'est une autre histoire... Il faut modifier la partie SI(NB.SI(J$1:J1;plage)=0. A voir.

@ plus
 
Dernière édition:

Statistiques des forums

Discussions
312 801
Messages
2 092 245
Membres
105 313
dernier inscrit
tissouma