Comment importer des données d'un fichier CSV vers un tableau Excel en VBA

Bonjour à tous et à toutes,

Le sujet a déjà été traité mais je voudrais un peu d'aide en ce qui concerne mon cas si c'est possible ! Alors voilà, j'ai un fichier CSV que je peux ouvrir avec Excel, il se présente comme ça :

csv

J'ai fait un programme en VBA qui m'importe bien mes données CSV dans mon tableau excel mais ces données se mettent toutes dans les mêmes colonnes (A et B) :

colonnes

Voici mon code VBA (j'utilise un UserForm avec un bouton importer) :

vba

Si vous avez une solution je suis preneur !

Merci beaucoup.

Bonjour,

Si tu nous présente les données dans des images, c'est qu'elles ne sont pas confidentielles.

Les fichiers eux-même (fichier.xlsm et fichier.csv) seraient beaucoup plus utile pour t'aider.

ric

Merci pour votre réponse !

Non elles ne sont pas confidentielles, voici le fichier CSV et mon programme en question !

23capteur-2020-05.zip (35.52 Ko)
25oui.xlsm (126.51 Ko)

Bonjour à tous

Tu sembles avoir une version récente d'Excel (qui devrait figurer dans ton profil - dernière ne voulant pas dire grand chose...- ) donc pourquoi VBA et pas PowerQuery qui fait cela sans souci (et peut faire beaucoup plus qu'importer) ?

csv

Et bien j'ai essayé de trouver où était inscrite la version mais je n'ai pas trouvé. De plus je dois impérativement utiliser le VBA pour le faire dans le carde de mon projet.

Bonjour à tous,

J'ai attendu ta réaction car, je trouvais très intéressante la suggestion de 78chris.

Pour trouver la version d'Excel > Fichier > Compte > À propos de Excel.

Je regarde donc pour le code VBA.

ric

Merci beaucoup ! voilà ce qu'il me dit :

capture

Bonjour à tous,

Un essai ...

Sur ma machine, ça prend environ 70 secondes à s'exécuter ... il y a quand même plus de 3000 lignes dans le csv fourni.

ric

87oui.xlsm (59.49 Ko)

Bonjour,

Vous pensez que c'est normal que ça prenne autant de temps ? Serait-il possible de voir comment vous avez procédé ?

Bonjour,

Comment j'ai procédé ... regarde le code.

C'est une macro que j'ai pigé sur le un forum.

S'il y a quelque chose de plus rapide pour 3000 lignes et 47 colonnes, je suis preneur; c'est souvent demandé.

ric

Bonjour à tous,

Par contre, à l'aide de PowerQuery , il y en a pour 3 secondes.

ric

Merci pour votre réponse, je regarde comment vous avez fait au niveau du code demain matin, merci beaucoup en tout cas

Bonjour tout le monde !

j'ai regardé votre code et je n'ai pas tout compris. Pourriez-vous m'indiquer à quoi correspondent les variables Ar(), iRow, iCol ? Désolé si ces questions vous paraissent un peu bête, je suis nouveau en VBA et j'essaie de comprendre pleins de choses !

J'ai aussi enlevé une macro que je vous avait laissé mais qui ne servait à rien à part prendre du temps pour démarrer le programme (cette macro est dans le module1).

RE à tous

Quel est l'intérêt de t'obstiner sur VBA que tu ne connais pas, qui d'après les tests de Ric prend plus de temps que PowerQuery, d'autant qu'il va falloir de toute évidence faire d'autres actions que l'import, ce que pOwerQuery fera bien plus facilement...

Bonjour à tous,

Ar() est une variable tableau pour stocker temporairement chacune des lignes, le temps de découper cette ligne à chacune des séparations ... séparation qui est le ; dans ce cas ci.

iRow est la variable pour le numéro de ligne au moment d'écrire les données importées

Icol est la variable pour le numéro de colonne au moment d'écrire les données importées

Exemple : écrire dans la cellule .Cells(iRow, iCol)

Ce code traite chacune des cellules ( 3538 lignes par 47 colonnes = 166286 cellules à traiter)

D'où le temps qui varie d'une machine à l'autre ... mais qui reste embêtant.

ric

RE à tous

Quel est l'intérêt de t'obstiner sur VBA que tu ne connais pas, qui d'après les tests de Ric prend plus de temps que PowerQuery, d'autant qu'il va falloir de toute évidence faire d'autres actions que l'import, ce que pOwerQuery fera bien plus facilement...

Bonjour 78chris,

C'est dans le cahier des charges de mon projet l'utilisation du VBA. De plus, je dois réussir à automatiser le tout. Ici j'ai un fichier CSV qui m'est donné, mais si on m'en donne un autre, il faut que j'arrive à faire le même traitement pour les deux fichiers (récupération des mêmes données pour tracer des graphs). en fait il faut que j'automatise le tout, peu importe le fichier qui m'est donné.

J'ai regardé un peu comment fonctionnait Power Query et de ce que j'ai compris, si je fais une macro en l'utilisant, elle ne sera valable que pour un chemin d'accès de fichier mais ce n'est pas mon but puisque je veux l'automatiser.

Je commence à me faire un peu au VBA, il faut juste que je prenne le temps de comprendre !

RE

C'est dans le cahier des charges de mon projet l'utilisation du VBA. De plus, je dois réussir à automatiser le tout. Ici j'ai un fichier CSV qui m'est donné, mais si on m'en donne un autre, il faut que j'arrive à faire le même traitement pour les deux fichiers (récupération des mêmes données pour tracer des graphs). en fait il faut que j'automatise le tout, peu importe le fichier qui m'est donné.

J'ai regardé un peu comment fonctionnait Power Query et de ce que j'ai compris, si je fais une macro en l'utilisant, elle ne sera valable que pour un chemin d'accès de fichier mais ce n'est pas mon but puisque je veux l'automatiser.

Je commence à me faire un peu au VBA, il faut juste que je prenne le temps de comprendre !

Non, on peut passer à PowerQuery un chemin variable, heureusement

Pour tous les exemples que je poste sur les forums, je mets le chemin en variable sinon les personnes ne pourraient pas utiliser l'exemple sur leur PC...

J'ai déjà répondu sur des cas liés à des graphs....

Macro c'est VBA, PowerQuery c'est autre chose

Mais si le cahier des charges exige VBA...

Et bien écoutez je veux bien voir comment faire avec un chemin variable alors ! Je vais voir s'il est possible d'adapter le cahier des charges dès demain matin.

RE

Sur ce fil par exemple : https://forum.excel-pratique.com/viewtopic.php?f=2&t=131799&p=809351&hilit=powerquery#p809351

Tu peux charger le csv et le fichier que j'ai posté dans le dernier post, mettre le csv où tu veux et indiquer le chemin dans la cellule prévue avant d'utiliser Données, Actualiser Tout

Bonjour,

Un exemple qui allie Power Query et VBA.

Le choix du fichier csv à traiter se fait à partir d'un double-clic.

Les fichiers csv doivent avoir le même format.

Cdlt.

114downloads.zip (102.15 Ko)

Nota: la procédure VBA nest pas optimisée.

Rechercher des sujets similaires à "comment importer donnees fichier csv tableau vba"