XL 2019 Extraire valeur unique (comparaison 2 colonnes)

jim9595

XLDnaute Nouveau
Bonjour a tous j'aimerais comparer les valeurs dans la colonne A à celle de la colonne B => Dans la colonne C sur chaque ligne je veux donc avoir seulement les valeurs unique de la colonne A comparer a celle de la colonne B .

Exemple:
Colonne AColonne BColonne C (valeur unique colonne A)
AAAAAB
ABAD
AEAE


PS: j'ai des colonne avec 50 000 ligne max. Donc il faut que la formule/ macro se base sur les 50 000 ligne en colonne A et B et puisse la place en colone C sur 50 000 ligne max aussi si valeur unique.

Merci pour votre aide
 

chris

XLDnaute Barbatruc
Bonjour

Se fait en quelques clics en utilisant un tableau structuré et PowerQuery

1650744094340.png
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir,

Une méthode en VBA. Le code est dans le module de la feuille Feuil1. La colonne C se met à jour s'il y a au moins un changement dans les valeurs des colonnes A ou B.

La méthode par PQ sera sans doute plus rapide que celle par VBA.
 

Pièces jointes

  • jim9595- sans doublons- v1.xlsm
    577.8 KB · Affichages: 7

chris

XLDnaute Barbatruc
RE à tous

  • Mettre la source sous forme de tableau structuré
  • Depuis une cellule du tableau, Données à partie d'un tableau : ce qui ouvre PowerQuery
  • Accueil, Fusionner les requêtes : prendre la requête actuelle + type de jointure Gauche opposée et cliquer dans la partie haute sur la 1ère colonne et dans la partie basse sur la seconde colonne puis OK
    1650751822541.png
  • Sélectionner la 1ère colonne, clic droit Supprimer les autres colonnes
  • Sortir par Fermer charger dans, Tableau, et choisir l'emplacement
 

Pièces jointes

  • Requête_soustraction_PQ.xlsx
    18.2 KB · Affichages: 1

Efgé

XLDnaute Barbatruc
Bonjour à toutes et tous
Moins classieux que @chris , plus simple que @mapomme (je vous salut tous deux au passage)
VB:
=SIERREUR(INDEX(Tableau1[Colonne1];PETITE.VALEUR(SI(NB.SI(Tableau1[Colonne1];Tableau1[Colonne2])=0;LIGNE(Tableau1[Colonne1])-1);LIGNES($1:1)));"")
Et si @jim9595 a accès à FILTRE
VB:
=FILTRE(Tableau1[Colonne1];NB.SI(Tableau1[Colonne1];Tableau1[Colonne2])=0;"Aucun")
Cordialement
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Hé bien moi aussi je te salue @Efgé :)

Quatre remarques :
  • la première formule fait ramer ma bécane. Avec 50 000 lignes. j'ai dû interrompre
  • avec la seconde formule, c'est kif kif bourricot
  • les formules n'enlèvent pas au niveau résultat les doublons de la colonne A non présents en B le cas échéant (injecter la seconde formule dans un simple Unique(...) devrait le faire)
  • le plus élégant (selon moi) est PQ mais qui nécessite malgré tout un peu de VBA pour actualiser automatiquement la requête (à moins qu'il n'existe une option de la requête le permettant ? ). On retombe sur le problème des TCD qui ne se mettent pas automatiquement à jour :mad: (ça m'a toujours énervé cette incapacité des TCD à ne pas savoir gérer automatiquement les actualisations selon que l'utilisateur le désire ou pas)
 
Dernière édition:

chris

XLDnaute Barbatruc
RE
ça m'a toujours énervé cette incapacité des TCD à ne pas savoir gérer automatiquement les actualisations selon que l'utilisateur le désire ou pas
La logique PQ comme celle des TCD repose sur celle des bases de données où on gère par définition de gros volumes.

Une MAJ en temps réel serait pénible comme le calcul auto sur les gros volumes.

On peut déjà demander la MAJ auto à l'ouverture du classeur.

Un indicateur indiquant que le TCD ou la requête n'est plus actuel serait un plus et, pourquoi pas, une option.
Mais le PB est de définir les règles de déclenchement : si la source a n colonnes, quel est le déclencheur ?
 

Discussions similaires

Réponses
5
Affichages
124
  • Résolu(e)
Microsoft 365 Filtre élaboré
Réponses
3
Affichages
209
Réponses
22
Affichages
689