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

XL 2016 Croiser 2 tableaux

HelloDy

XLDnaute Junior
Bonjour à tous,

Je dispose de deux tableaux de 7 colonnes et X et Y lignes. Les tableaux sont identiques dans leur format, seul le contenu change ainsi que le nombre de lignes.
J'aurais besoin de faire "matcher" ces tableaux et d'en obtenir un 3ème contenant l'ensemble des lignes qu'ont les 2 tableaux en commun.
Et si possible par ailleurs faire disparaître les lignes en commun des deux premiers.
Y a-t-il une manière "simple" d'y arriver ?

Merci beaucoup


Elo
 

HelloDy

XLDnaute Junior
Bonsoir @BOISGONTIER,

Oui j'y ai pensé mais ils contiennent des infos confidentielles, et supprimer ces infos enlèverait tout intérêt de les joindre ^^
Merci pour les liens, je vais y jeter un oeil

Bonne soirée.

Edit : je viens de regarder les 2 exemples mais ça ne correspond pas à ce que je cherche malheureusement. Je cherche à extraire les lignes identiques dans 2 tableaux, pas à "assembler" 2 tableaux. Merci quand même pour ces exemples qui pourront me servir une prochaine fois

Elo
 
Dernière édition:

chris

XLDnaute Barbatruc
Bonjour

Faisable facilement par une requête PowerQuery, intégré à ta version pour traiter les communs. Il faut définir les points communs.

On peut aussi faire le delta pour chaque tableau : le résultat de la requête sera à déconnecté de la source qui pourra être supprimée.
 

laurent950

XLDnaute Accro
Bonsoir Chris;
J'aimerais bien essayer un Power Query, Vous avez un exemple pour comprendre le fonctionnement s'il vous plaît Chris

Ps : Hello Dy (ce n'est pas très compliqué à mettre en oeuvre, il faut juste écrire le petit bout d’algorithmes, aussi j'aurais bien aimé apprendre avec PowerQuery aussi.
Lien : https://support.office.com/fr-fr/ar...er-query-7104fbee-9e62-4cb9-a02e-5bfb1a6c536a

J'ai compris le principe, Merci Chris pour cette info que je ne connaissais pas.

Laurent
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
VB:
Sub Communs()
  a = Sheets(1).Range("B2:B" & Sheets(1).[B65000].End(xlUp).Row)
  Set MonDico1 = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(a)
   MonDico1(a(i, 1)) = i
  Next i
  b = Sheets(2).Range("B2:B" & Sheets(2).[B65000].End(xlUp).Row)
  Tbl2 = Sheets(2).Range("A2:G" & Sheets(2).[B65000].End(xlUp).Row)
  Set mondico2 = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(b)
    If MonDico1.exists(b(i, 1)) Then If Not mondico2.exists(b(i, 1)) Then mondico2(b(i, 1)) = i
  Next i
  ReDim Tbl3(1 To mondico2.Count, 1 To UBound(Tbl2, 2))
  j = 0
  For Each k In mondico2.keys
    j = j + 1: ligne = mondico2(k)
    For i = 1 To UBound(Tbl2, 2)
      Tbl3(j, i) = Tbl2(ligne, i)
    Next i
  Next k
  Sheets(3).[A2].Resize(UBound(Tbl3), UBound(Tbl3, 2)) = Tbl3
End Sub

Boisgontier
 

Pièces jointes

  • Communs2BD.XLS
    116 KB · Affichages: 6

chris

XLDnaute Barbatruc
Re
Il faut charger chacun des tableau dans PowerQuery
Puis faire une requête de fusion en faisant correspondre chacune des colonnes en jointure interne
Seules restent les lignes correspondantes


Pour les autres lignes (non concordance) refaire de même, une fois par table (Fich1 en premier, puis Fich2 en premier) mais en jointure externe gauche.
On déplie un champ de la table liée et on filtre les null

 
Dernière édition:

chris

XLDnaute Barbatruc
Re

Si tu pars d'un fichier vierge, Données, Obtenir des données, A partir d'un fichier, A partir d'un classeur.

Cela va ouvrir l'interface PowerQuery, tu auras à choisir l'onglet et le contenu s'affichera.

Pour le second tu peux la faire depuis l'interface PowerQuery : Accueil, Nouvelle source, Fichier, Excel

Tes fichiers ne sont pas clean donc sur chaque il faut filtrer le N° de commande pour éliminer null avant de les croiser
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…