Export Excel=> TXT avec suppression doublon - VB/VBA/VBS - Programmation
Marsh Posté le 17-04-2017 à 14:58:10
Bonjour !
Si l'exécution apparaît longue c'est déjà à cause du code !
Il serait si simple de ne traiter que la plage contenant les données !
Voir déjà dans l'aide VBA les propriétés CurrentRegion, UsedRange, …
Ensuite Goto est inutile et facteur de ralentissement !
Et utiliser une boucle est souvent moins rapide que d'utiliser une fonctionnalité interne d'Excel !
Parmi les voies rapides, il y a le filtre avancé d'Excel permettant d'extraire en une seule instruction
les données souhaitées et sans doublon vers une autre feuille de calculs par exemple …
Consulter l'aide VBA de la méthode AdvancedFilter comme les tutoriels sur la Toile.
Marsh Posté le 17-04-2017 à 15:09:43
Autre possibilité via la méthode Range.Find comme illustrée dans l'aide VBA interne …
Marsh Posté le 17-04-2017 à 15:41:00
Une démonstration avec CurrentRegion & Find :
Code :
|
Marsh Posté le 18-04-2017 à 16:04:18
Bonjour
merci pour le code, mais il semble qu'il y a des problèmes
-il ne tient pas compte des doublons
et surtout, il est encore moins rapide que celui que j'ai donné !
ex: 460000 ligne envoyées vers le TXT
45s avec ton code
11s avec celui que j'ai mis en exemple
Finalement le code que j'ai mis au début fera amplement l'affaire
Marsh Posté le 18-04-2017 à 16:24:35
Code :
|
épuré au max,il reste rapide et surtout facilement compréhensible
rien qu'en le lisant, je sais dire ce qu'il va faire, et çà, c'est important pour moi
Marsh Posté le 13-04-2017 à 23:31:55
Bonjour
j'ai fais une petite macro qui fonctionne sous excel (car mes fichiers sources sont en Excel)
elle a pour but de trouver dans une colonne un mot
si ce mot est trouvé alors la valeur d'une autre colonne devra être envoyé dans un fichier TXT
le traitement de 680 000 ligne me prends 25 secondes
cela fonctionne, c'est déjà çà !
connaissez vous une méthode plus rapide ?
en VBS, avec des fonctions de dictionnaire, tableau, sans ouvrir le fichier xls
pour expliquer le code ci dessus, voila ce que je dirais
For i = 1 To 1048000 => les tables sont assez grosses en général, sans être pleines
append => j'ai plusieurs feuilles a traiter
on error goto suivant => évite les erreurs quand la cellule en comporte une
le teste sur le dernierplan est la pour éviter les doublons