Question

J'ai codé un script VBA dans Excel qui ajoute de nouvelles données dans une fiche technique avec des informations précédentes. Avant de le faire, les nouvelles données sont copiées dans une fiche technique provisoire. Pour éviter les doublons, je crée une colonne supplémentaire et je fais une vlookup d'ID. Si l'ID des nouvelles données importées est déjà dans la fiche technique avec les anciennes données, cette ligne est marquée comme dupliquée et sera supprimée. Les "lignes non dupliquées" sont ensuite copiées dans la feuille de données finale, où toutes les données sont stockées.

En ce moment, j'utilise une référence de colonne (A: a) dans le VLOOKUP et je ne sais pas si c'est peut-être la raison pour laquelle le script VBA a besoin de plus en plus de ressources et de temps à courir. Lorsque j'ai codé pour la première fois, j'ai fait le test avec pas plus de 4 000 lignes dans la fiche technique d'origine et 4 000 lignes dans les données importées. La macro a été faite après 90 secondes. À l'heure actuelle, il a besoin de plus de 5 minutes et la fiche technique avec données ne représente que 40 000 rangées, tandis que les nouvelles données sont toujours d'environ 4 000 rangées.

Devrais-je référencer de manière dynamique la plage dans le VLOOKUP au lieu d'utiliser un: A ou cela n'a pas d'importance en termes de vitesse?

Était-ce utile?

La solution

Comme mentionné dans mon commentaire, il y a certainement un moyen d'accomplir cette tâche à l'aide de VBA, mais parfois la solution la plus simple est la meilleure.Je recommanderais plus de 40 000 enregistrements à chaque fois et à l'aide de la fonction "Supprimer des duplicats" sous le ruban "Données" à l'aide de la colonne qui contient votre valeur unique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top