Macro d'importation de .CSV très lente

Bonjour,

Avec l'aide précieuse de ce forum et particulièrement de DanielC, j'ai maintenant un fichier qui m'aide grandement dans mon quotidien. En résumé, ce fichier me permet d'importer des données depuis un fichier .CSV et de les filtrer selon certains critères précis. C'est vraiment top.

Si mon fichier fonctionne maintenant très bien, mon problème est que parfois j'utilise des fichiers .CSV qui comptent plusieurs dizaines de milliers de lignes, voir parfois plus de 300'000 lignes et là ça se complique. Jusqu'à 10'000 lignes, pas trop de problème, j'attends quelques secondes voir 20 secondes max et cela fonctionne. Si j'ai 100'000 lignes, c'est mort. Excel tourne dans le vide et il ne se passe plus rien, même si je laisse tourner parfois plusieurs minutes.

DanielC m'a parlé de "Tableau mémoire". J'ai essayé de me renseigner, j'ai trouvé quelques exemples (qui parle de "array", etc.) mais aucun que j'ai réussi à adapter pour mon fichier.

En pièce jointe, j'ai mis un exemple de ma macro d'importation ainsi qu'un fichier .csv qui comporte quelques milliers de lignes (j'aurais bien mis un fichier avec 150'000 lignes mais la taille maxi des fichiers est de 1.5mo).

Si quelqu'un est en mesure de m'aider, c'est top.

16exemple.zip (114.94 Ko)

Hello,

Vu ton fichier et ta version d'Excel, est ce que tu as déjà entendu parler de PowerQuery ?

J'avoue ne pas bien comprendre le vba dans ton fichier car je n'utilise jamais ce type d'instruction.

On ne dirait pas qu'il y a beaucoup de retraitements, si tu peux me dire tous les retraitements différents je peux tenter quelque chose par PowerQuery.

N'hésite pas si beosin :)

@+

Salut,

On m'a déjà parlé de PowerQuery, c'est vrai qu'il conviendrait très bien pour l'importation de .CSV. Toutefois, pour le traitement de mon fichier (et notamment des filtres complexes) je pense que je suis obligé de passer par du VBA (bon j'admets que je connais pas grand-chose à PowerQuery)

Mais dans tous les cas, sur mon ordinateur pro, je suis bloqué car PowerQuery est désactivé....

Merci à toi pour la proposition :-)

Normalement PowerQuery est nativement intégré dans Excel

Et niveau traitement de données on peut faire un sacré paquet de trucs complexes avec PowerQuery :)

Dans le ruban si tu vas dans « données » puis « obtenir des donnees » puis « lancer l’éditeur PowerQuery »

Tu y as accès ?

@+

Effectivement PowerQuery est bien là, toutefois quand je veux importer un fichier .csv par ce biais en utilisant "Nouvelles source", j'ai un message qui me dit que mon administrateur a désactivé cette fonction. Bon, je pense que je pourrais regarder pour qu'ils débloquent ça...

Si c'est le cas, est-ce qu'il est possible de créer un classeur "Modèle" utilisant PowerQuery avec des filtres et des fonctions enregistrées et facilement applicables?

Grâce au classeur en VBA que j'ai fait (enfin... qu'on m'a aidé à faire plutôt:-) ), c'était top car je pouvais partager ça avec mes collègues, qui n'ont aucune connaissance en Excel pour certains, et ils pouvaient l'utiliser de manière simple via le Userform. En gros, il suffisait d'ouvrir le fichier, d'importer et de faire quelques clics sur les boutons de commande pour que les résultats souhaités apparaissent sans devoir implanter manuellement des fonctions ou des filtres.

Hello,

Si c'est débloqué, on peut définir une cellule de ton Excel qui contient le chemin vers le fichier et tu as juste à faire un clic droit actualiser comme un TCD pour importer et faire tous tes traitements :) La puissance PowerQuery =D

@+

J'ai utilisé PowerQuery sur mon ordinateur privé pour importer un grand fichier .csv (800'000 lignes). C'est effectivement très rapide par rapport à ma macro.

En se basant sur le fichier .csv que j'ai envoyé dans mon premier message, j'aimerais filtrer la colonne N°de série en fonction de certains critères. Par exemple:

-Contient 6 caractères

-Commence par les chiffres 1 ou 2

-Commence par 2 lettres

-Ne contient pas les lettres A, B, C, D, E, F, I, O, Q, U, Y

-Commence par 2 chiffres, suivis de 2 lettres, suivies de 2 chiffres

En sachant que parfois j'aimerais combiner plusieurs critères. Penses-tu que cela est faisable?

Hello,

Tu peux envoyer un fichier exemple représentatif d'une 30aines de lignes ?

Comme ça je bosse sur le même type de fichier.

Je te remercie

@+

Voilà :-)

17exemple.csv (4.45 Ko)

Ah j'avais pas vu que le nombre de critères est variable, il faudrait me dire lesquels pour mettre en place les requêtes qu'il faut...

Sinon je ne saurai pas faire

@+

Désolé, j'étais absent :-). Alors je dois parfois combiner plusieurs d'entres eux, c'est pour ça que la Macro était bien pratique, avec des boutons de filtres par critères qu'il suffit de presser pour combiner ces critères, mais vu le gain de temps à l'importation, c'est volontiers si tu arrives à faire quelque chose avec PowerQuery.

Les critères de filtres

1. Contient 6 caractères

2. Commence par les chiffres 1 ou 2, suivi de 3 lettres, suivi de 3 chiffres

3. Commence par 2 lettres

4. Ne contient pas les lettres A, B, C, D, E, F, I, O, Q, U, Y

5. Commence par 2 chiffres, suivis de 2 lettres, suivies de 2 chiffres

6. Contient 7 caractères

Combinaison

Par rapport aux critères ci-dessus, j'aimerais combiner par exemple: le 1 avec le 4 / Le 1 avec le 5 / Le 2 avec le 6 /...

Belle journée!

Hello,

Une proposition

Tu rentres tes choix de combinaison dans le tableau "filtre à exécuter" et ton chemin de fichier dans le tableau dédié et tu vas sur l'onglet Importation et tu fais clic droit puis actualiser et tu auras le résultat voulu

@+

26tchickern.xlsx (22.44 Ko)

Salut Baroute,

J'ai testé tout ça et ça fonctionne très bien et de manière bien plus rapide qu'avec la macro. Le seul bémol c'est que c'est un peu moins intuitif à utiliser qu'un Userform au niveau de l'importation surtout. J'essayerai d'expliquer tout ça aux autres utilisateurs, on verra sur la durée si ça fonctionne :-)

Merci beaucoup pour le temps que tu as passé la dessus!

Hello,

Merci pour le retour :)

Après rien n’empêche de le mettre en forme de manière plus « sexy » et faire un parcours utilisateur sympa juste avec de la mise en forme :)

N’hésite pas si besoin en tout cas

@+

Rechercher des sujets similaires à "macro importation csv tres lente"