XL 2013 Faire une 3e colonne à l'aide de deux colonnes mais sans doublon ?

DukeDevlin

XLDnaute Nouveau
Bonjour à tous,

Je vous sollicite aujourd'hui pour un problème courant où j'ai du mal à comprendre les explications suite à mes recherches. J'ai deux colonnes. Une colonne qui prend des "Clés" dans mon fichier une source, une autre colonne qui prend des "Clés" dans mon extract. Mon objectif, faire une 3e colonne qui consoliderai ces deux colonnes mais avec que des valeurs uniques. Je vous joins un fichier excel. Mais l'idée est la suivante :

Ce que j'ai :

SourceExtract
10101013
10111090
10121000
10131010

Ce que je veux :

SourceExtractConsolidation
101010131000
101110901010
101210001011
101310101012
1090
1013

Précision, il n'y a pas forcément autant de données dans la colonne "Extract" que "Source". A priori, il y aura plus de données dans la "Source". Comment faire ?

Merci.
 

Pièces jointes

  • Doublon colonnes.xlsx
    8.8 KB · Affichages: 9

Staple1600

XLDnaute Barbatruc
Re, Bonjour pierrejean

Voila ce que cela donne avec Données/Supprimer Doublons
000Filtre.gif
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

Un essai par formule
VB:
=SIERREUR(PETITE.VALEUR(SI((TRANSPOSE($A$2:$B$6)>0)*(TRANSPOSE($A$2:$B$6)>$D1);(TRANSPOSE($A$2:$B$6)));1);"")

JHA
 

Pièces jointes

  • Doublon colonnes.xlsx
    10.6 KB · Affichages: 3

Staple1600

XLDnaute Barbatruc
Re, Bonjour JHA

Donc en VBA, ce que je montrai sur la copie d'écran du message#5.
VB:
Sub DeuxColonnesEnUne_sansdoublons()
Dim tablo() As Variant, Plg As Range, x As Long
Application.ScreenUpdating = False
[T1] = "Consolidation"
tablo = Selection.Offset(1).Value
    For x = LBound(tablo, 2) To UBound(tablo, 2)
        Set Plg = Cells(Rows.Count, "T").End(xlUp).Offset(1)
        Plg.Resize(UBound(tablo, 1)).Value = Application.Index(tablo, , x)
        Set Plg = Nothing
    Next x
Erase tablo
Columns("T").RemoveDuplicates Columns:=1, Header:=xlNo
Columns("T").Sort Key1:=Columns("T"), order1:=xlAscending, Header:=xlYes
End Sub
NB: Ici pour l'exemple, le tableau de deux colonnes est en R:S et recopie en T
1) Je sélectionne le tableau (avec ses entêtes) puis je lance la macro.
 

R@chid

XLDnaute Barbatruc
Bonsoir @ tous,
t'es sous Excel2013, profite bien de Power Query, si ce n'est pas encore fait, active-le dans les compléments d'Excel.
Après l'ajout des données dans ton tableau Bleu, fais un clic droit dans le tableau Vert puis Actualiser.


Cordialement
 

Pièces jointes

  • DukeDevlin_ListeSansDoublon.xlsx
    17.9 KB · Affichages: 6

DukeDevlin

XLDnaute Nouveau
Re, Bonjour JHA

Donc en VBA, ce que je montrai sur la copie d'écran du message#5.
VB:
Sub DeuxColonnesEnUne_sansdoublons()
Dim tablo() As Variant, Plg As Range, x As Long
Application.ScreenUpdating = False
[T1] = "Consolidation"
tablo = Selection.Offset(1).Value
    For x = LBound(tablo, 2) To UBound(tablo, 2)
        Set Plg = Cells(Rows.Count, "T").End(xlUp).Offset(1)
        Plg.Resize(UBound(tablo, 1)).Value = Application.Index(tablo, , x)
        Set Plg = Nothing
    Next x
Erase tablo
Columns("T").RemoveDuplicates Columns:=1, Header:=xlNo
Columns("T").Sort Key1:=Columns("T"), order1:=xlAscending, Header:=xlYes
End Sub
NB: Ici pour l'exemple, le tableau de deux colonnes est en R:S et recopie en T
1) Je sélectionne le tableau (avec ses entêtes) puis je lance la macro.


Merci. Cela fait exactement ce que je veux. MAIS, j'ai un problème de format j'ai l'impression. Mes "Extract" et "Source" proviennent de TCD, c'est un "=qui renvoie à la cellule du TCD", cela me donne l'ensemble de mes clés. L'idée était d'avoir une liste et ensuite de faire des RECHERCHEV sur cette liste unique pour avoir la valeur correspondante. A la main, j'y arrive, quand je fais un C/C standard de mon extract/source, mais avec la colonne qui se créer via la macro, quand je fais un "=cellule de consolidation" et ensuite j'applique un RECHERCHEV, cela ne me retrouve pas les valeurs correspondantes, j'ai l'impression que ça vient du format. Je ne saurai pas dire pourquoi. Dans mes tableaux, les données sont en "nombre stocké sous forme de texte", ce qui ne doit pas le cas du "consolidation" ?

EDIT : J'ai rajouté une colonne en plus pour formater la consolidation en format texte avec ', moyen de le faire dans le code directement ou pas ? Merci.
 
Dernière édition:

Discussions similaires