Bonjour à tous
,
Bonjour
job75
Un essai sans dictionary.
Le principe est de trier les deux tableaux selon la clef SIRET. Puis on parcourt les tableaux (chacun à l'aide de son pointeur). Quand il y a égalité des SIRET correspondant aux deux pointeurs, on a trouvé le nom de l'entreprise correspondant au SIRET puis on incrémente le pointeur du tableau de la Feuil2, sinon on incrémente le pointeur correspondant au plus petit SIRET associé. Et on recommence.
Il y a deux macros :
1) macro
Rechercher() :
- Cette macro ne rétablit pas l'ordre initial du tableau de Feuil1. C'est inutile puisque c'est une base de référence pour les recherches
- Cette macro ne rétablit pas l'ordre initial du tableau de Feuil2. Ce peut être génant
- La première exécution sera toujours plus longue que les suivantes (à la première exécution, on trie le tableau de la feuil1, à moins de changement dans le tableau de la feuil1, le tableau sera déjà trié pour les exécutions suivantes...)
Sur mon vieux PC (construit par mes soins, il a maintenant 10 ans), avec les données initiales et non triées du fichier joint, la 1ère exécution dure environ 7,2 s et les suivantes environ 4.7 s.
2) macro
Rechercher_BIS() :
- Cette macro ne rétablit pas l'ordre initial du tableau de Feuil1. C'est inutile puisque c'est une base de référence pour les recherches
- Cette macro rétablit l'ordre initial du tableau de Feuil2
- La première exécution ne sera que très légèrement plus courte que les suivantes
Sur mon vieux PC (construit par mes soins, il a maintenant 10 ans), avec les données initiales et non triées du fichier joint, la 1ère exécution dure environ 10,2 s et les suivantes environ 9,2 s.
nota 1 : on recalcule à chaque fois l'ensemble du tableau de Feuil2 (rien ne dit en effet que la tableau de référence n'a pas changé. Par exemple des changements de nom d'entreprise tout en gardant le même SIRET - je ne sais pas si cela est possible
)
Mais on pourrait adapter sans problème les macros pour ne traiter que les nouveaux ajouts dans le tableau de la feuil2.
nota 2 : dans le fichier joint, les deux tableaux sont entièrment 'mélangés'.
Question : je suis intéressé pour connaître des temps d'exécution sur des PC modernes & rapides par rapport à mon vieux PC (Intel Core 2 CPU 6420 - 2,13 GHz - 2 GB RAM, NVIDIA GeForce 8600 GTS)