Comparer 2 tableaux, en créer un 3ème avec particularités

neal

XLDnaute Junior
Bonjour
Novice en macro, je cherche à en créer une pour comparer 2 tableaux. Et j’ai atteint la limite de mes compétences. Je me tourne donc vers vous en espérant trouver une solution.
Voici mon problème :

Je me retrouve avec deux tableaux dont les en têtes de colonne sont équivalents. Il y a à peu près une cinquantaine de colonnes et entre 100000 et 200000 lignes dans chaque tableau (oui c’est énorme, mais je n’ai pas le choix).

Dans les deux cas, en colonne A j’ai créé un concatener qui me permet d’avoir un code unique.
Je cherche à faire une macro pour comparer ces deux tableaux, en créant un 3ème tableau dans la feuil3 (attention, il y a un décalage dans les colonnes pour avoir un « commentaire » dans la colonne A du tableau de la Feuil3).

Le but est d’obtenir un tableau récapitulatif dans lequel j’ai toutes les données sans doublons provenant des tableaux en feuil1 et feuil2. Sachant que le tableau en Feuil1 sert de base, c’est lui dont les données sont justes.

Pour être sûr de tout avoir, j’ai pensé à cette méthodologie :

D’abord on compare le tableau en Feuil1 avec celui en Feuil2 et on créé un tableau en Feuil3

1- vérifier que le code unique en Feuil1 existe en Feuil2.
2- S’il existe, on colle la ligne de la Feuil1 dans la Feuil3.
3- S’il n’existe pas on colle aussi la ligne entière de la Feuil1 dans la Feuil3 et on met le fond de la cellule en rouge (pour montrer qu’il n’existe que dans la Feuil1).
4- Si le code existe dans les 2 feuilles, alors on compare chaque donnée de chaque colonne. Dès qu’il y a une différence, on met le fond de la cellule en rouge.
5- On passe à la ligne suivante dans la Feuil1


Ensuite on compare le tableau en Feuil2 avec celui créé en Feuil3 :

1- Vérifier que le code unique en Feuil2 existe en Feuil3.
2- S’il existe, on ne fait rien (il a déjà été comparé avant).
3- S’il n’existe pas, alors on colle la ligne entière de la Feuil2 dans la Feuil3 et on met le fond de la cellule du code en rouge.
4- On passe à la ligne suivante dans la feuil2.

Pour terminer, j’ai mis dans le tableau de la feuil3 une colonne en plus qui mettra le résultat de la comparaison pour chaque ligne :

- Existe en Feuil1 et en Feuil2, données équivalentes.
- Existe en Feuil1 et en Feuil2, données différentes.
- Existe en Feuil1, n’existe pas en Feuil2.
- Existe en Feuil2, n’existe pas en Feuil1.


Je précise que le temps d'exécution de la macro n'est pas important (même si elle tourne 5 heures par exemple). La priorité est le résultat.
Je joins un fichier excel avec les tableaux (sans les données, confidentielles :/)
Et je joins aussi une petite image créée sur Paint pour expliquer plus clairement ce que je cherche à faire.

Je vous remercie d'avance pour votre aide :)
 

Pièces jointes

  • Sans titre.jpg
    Sans titre.jpg
    17.3 KB · Affichages: 468
  • Sans titre.jpg
    Sans titre.jpg
    17.3 KB · Affichages: 550
  • Sans titre.jpg
    Sans titre.jpg
    17.3 KB · Affichages: 533
  • Classeur1.xlsm
    10.2 KB · Affichages: 440
  • Classeur1.xlsm
    10.2 KB · Affichages: 549
  • Classeur1.xlsm
    10.2 KB · Affichages: 543

Paritec

XLDnaute Barbatruc
Re : Comparer 2 tableaux, en créer un 3ème avec particularités

Bonjour bclement le forum
sur le principe j'ai compris ce que tu veux mais ton fichier avec 3 feuilles vides je ne vois pas l'intérêt du tout
enfin pour tester des lignes vides c'est plus rapide, la réponse est donc "il n'y a rien à reporter"
de plus je ne comprend pas bien la différence ??
- Existe en Feuil1 et en Feuil2, données équivalentes.
- Existe en Feuil1 et en Feuil2, données différentes.
a+
papou:eek:

EDIT: Bonjour Pierrejean
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Comparer 2 tableaux, en créer un 3ème avec particularités

Bonjour bclement

Salut Papou
Peux-tu creer quelques lignes dans chacun des tableaux de base avec des données 'bidon' mais de même nature que les données réelles ?
Si possible presentant tous les cas de figure que tu envisages
Cela nous simplifierait les tests ( ce travail devrait etre à ta portée)
 

neal

XLDnaute Junior
Re : Comparer 2 tableaux, en créer un 3ème avec particularités

Excusez moi, j'ai joins le mauvais fichier.
Normalement dans celui ci, tous les cas sont représentés.

EDIT

@Paritec :

La différence entre les deux :
Une ligne avec un code unique peut être présente dans les deux tableaux.
Ces lignes peuvent être équivalentes en tout point, quelque soit la colonne.
Ou au contraire, le code unique peut être présent dans les deux tableaux, mais des données sont différentes (dans une ou plusieurs colonnes).

Pour bien expliquer : ce sont 2 fichiers équivalents, mais à des dates différentes. Je dois les comparer suite à un plantage de serveur et à une perte de données, pour récupérer les informations et les ré-intégrer dans le fichier original. Mais je dois aussi savoir où se trouvent toutes les différences (sachant que les données justes sont celles du tableau dans Feuil1) pour pouvoir faire un choix d'intégration ensuite.

EDIT-2
Je ne sais pas si la méthode que j'ai décrite est la bonne ou la plus simple. En tout cas, je pense qu'elle exprime bien ce que je cherche à faire.
 

Pièces jointes

  • ED - Tableaux avec données.xlsm
    21.2 KB · Affichages: 670
  • ED - Tableaux avec données.xlsm
    21.2 KB · Affichages: 659
  • ED - Tableaux avec données.xlsm
    21.2 KB · Affichages: 534
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Comparer 2 tableaux, en créer un 3ème avec particularités

Re

Vois si cela te convient

teste bien avant de passer aux gros fichiers
 

Pièces jointes

  • ED - Tableaux avec données.xlsm
    31.2 KB · Affichages: 1 359
  • ED - Tableaux avec données.xlsm
    31.2 KB · Affichages: 1 564
  • ED - Tableaux avec données.xlsm
    31.2 KB · Affichages: 1 667

neal

XLDnaute Junior
Re : Comparer 2 tableaux, en créer un 3ème avec particularités

Déjà, merci pour la réponse plus que rapide.
Ensuite, bravo pour la macro (je vais essayer de la comprendre ... :confused: ) J'ai essayé de mon côté : en plus de ne pas fonctionner, ma macro était 10 fois plus longue que la tienne.

J'ai pu la tester, je n'ai pas vu d'erreurs. Elle a l'air de parfaitement fonctionner :D

Est ce que je peux m'autoriser d'abuser un peu de ton temps ?
Si oui, voici ma question :

Pour les lignes en "données différentes", je cherche à cibler quelles sont les données qui sont différentes.
On a bien un code unique qui se trouve dans les deux tableaux en Feuil1 et Feuil2, mais certaines données dans les colonnes suivantes ne sont pas les mêmes. Je cherchais à mettre en fond rouge les cellules où se trouvent les différences, qu'il y ai 1 seule différence ou plusieurs.

Est ce que c'est possible?
 

pierrejean

XLDnaute Barbatruc
Re : Comparer 2 tableaux, en créer un 3ème avec particularités

Re

Vois si cette macro fait l'affaire
 

Pièces jointes

  • ED - Tableaux avec données.xlsm
    37.2 KB · Affichages: 805
  • ED - Tableaux avec données.xlsm
    37.2 KB · Affichages: 782
  • ED - Tableaux avec données.xlsm
    37.2 KB · Affichages: 654

neal

XLDnaute Junior
Re : Comparer 2 tableaux, en créer un 3ème avec particularités

toutes mes excuses, je me suis mal exprimé :

1/ Je cherche à mettre un fond rouge dans les cellules du tableau créé en Feuil3

2/ Imaginons que ce la différence se trouve au niveau de la colonne "REFERENCE", alors la cellule de la ligne concernée, dans la colonne "REFERENCE" se met en rouge.

Une image rendra peut être plus compréhensible mon discours
Attention, j'ai juste mis en rouge des fonds de cellule au hasard pour montrer le résultat que je cherche à obtenir. Réellement, il n'y a peut être pas de différences.

Edit : en fait c'est principalement sur ce problème que je bute depuis 3 jours.
 

Pièces jointes

  • Sans titre.jpg
    Sans titre.jpg
    50.8 KB · Affichages: 391
  • Sans titre.jpg
    Sans titre.jpg
    50.8 KB · Affichages: 423
  • Sans titre.jpg
    Sans titre.jpg
    50.8 KB · Affichages: 424
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Comparer 2 tableaux, en créer un 3ème avec particularités

Re

J'avais coloré dans les feuilles Feul1 et Feuil2
Voila pour la Feuil3
 

Pièces jointes

  • ED - Tableaux avec données.xlsm
    32.9 KB · Affichages: 885
  • ED - Tableaux avec données.xlsm
    32.9 KB · Affichages: 834
  • ED - Tableaux avec données.xlsm
    32.9 KB · Affichages: 720

neal

XLDnaute Junior
Re : Comparer 2 tableaux, en créer un 3ème avec particularités

Merci infiniment ! Tu me sauves !

Ta macro marche à la perfection.

Mais (il y a toujours un mais) je l'ai testé sur mes tableaux avec 150 000 lignes ...
Au bout de 2 heures, un magnifique message d'erreur apparaît : "mémoire insuffisante"
C'était trop beau pour être vrai.

Que puis je faire pour que la macro s'exécute jusqu'au bout?
Je pensais à ne faire tourner qu'excel sur mon pc pendant la nuit ...
 

neal

XLDnaute Junior
Re : Comparer 2 tableaux, en créer un 3ème avec particularités

Oui, même en lançant la macro la nuit, en ayant supprimé toutes les tâches possibles, j'ai l'erreur.

Juste au cas où une solution serait possible (je pensais à rajouter des variables par exemple, pour que celles que tu utilise ne s'incrémentent pas à l'infini, etc.), voici la ligne où s'arrête le débogueur (voir image jointe).
 

Pièces jointes

  • Sans titre.jpg
    Sans titre.jpg
    66.8 KB · Affichages: 275
  • Sans titre.jpg
    Sans titre.jpg
    66.8 KB · Affichages: 317
  • Sans titre.jpg
    Sans titre.jpg
    66.8 KB · Affichages: 313

pierrejean

XLDnaute Barbatruc
Re : Comparer 2 tableaux, en créer un 3ème avec particularités

Re
Non , ajouter des variables ne servirait a rien
La ligne ou la macro s'arrete est celle ou un tableau stocke le resultat (si ton micro n'a pas assez de memoire : Arret)
je vais essayer de pondre quelque chose qui enregistrera au fur et a mesure dans la Feuil3 mais ce sera au detriment de la vitesse d'execution (mais apparement tu n'es pas trop pressé)
 

neal

XLDnaute Junior
Re : Comparer 2 tableaux, en créer un 3ème avec particularités

Effectivement, je préfère obtenir un résultat et que la macro tourne pendant 15 heures plutôt que de ne rien obtenir.

Sincèrement, je te remercie pour ton temps !
 

pierrejean

XLDnaute Barbatruc
Re : Comparer 2 tableaux, en créer un 3ème avec particularités

Re

teste cette version (lance la macr globale)
 

Pièces jointes

  • ED - Tableaux avec données.xlsm
    33.7 KB · Affichages: 798
  • ED - Tableaux avec données.xlsm
    33.7 KB · Affichages: 936
  • ED - Tableaux avec données.xlsm
    33.7 KB · Affichages: 1 010

Discussions similaires

Statistiques des forums

Discussions
312 160
Messages
2 085 839
Membres
103 001
dernier inscrit
vivinator