Macro :Séparation de donnée cvs avec ";" en tableau Excel

Bonjour à tous,

Je vous expose mon besoin et les points sur lequel je butte :

J'ai un fichier1 excel avec un tableau et mes formules.

Je dois alimenter de tableau par un fichier2 en .csv avec ; comme séparateur.

L'idée est d'appeler ce fichier2, de filtrer le contenue dans une colonne avant de copier le résultat dans fichier1 et de fermer fichier2 sans enregistrer.

J'ai une première fonction qui me permet d'effacer le contenu actuel du tableau avant d'importer les données du nouveau.

Donc pour alimenter mon tableau tout vide, j'ai créer un bouton/macro qui me permet d'ouvrir une boite et sélectionner le fichier2 .csv à importer.

Jusque là tout va bien.

Sauf que lorsque ma macro ouvre ce fichier2, toutes mes données sont en colonne A.

Je souhaiterais pouvoir séparer en colonne afin de pouvoir appliquer mon filtre (car trop de ligne sinon) avant la copie.

Je passerais ainsi de (1;2;3;4;5;6;7;8;9;10;11) en A à : 1 en A1, 2 en B1, 3 en C1........11 en K1

Et ceci sur l'ensemble des lignes (nombre variable et inconnues avant ouverture du fichier).

En gros, exactement comme avec la fonction "Convertir" de excel.

Une fois séparé, j'applique le filtre. Ce point j'y suis arrivé.

Et pour finir, je copie le résultat du filtre dans le fichier1, feuil1 à partir de A4

Donc ma question suivante est :

Peut-on m'aider à faire cela en VBA. J'ai vu de nombreux post avec la fonction split mais j'ai jamais réussit à l'adapter .

Après, s'il y a un moyen de faire autrement en passant par Power Query par exemple, cela ne me gêne pas. J'ai tenté par cela mais j'ai pas réussi à faire l'import vers une case précise (cela me fait toujours une feuille en plus) et cela utilise toujours un .csv précis, j'ai pas vu s'il est possible de sélectionner un fichier avant d'y appliquer le traitement et collage.

Pour la copie, je ne m'y suis pas encore penché dessus, donc normal qu'il n'apparaisse pas dans le code

Voici ou j'en suis de mon code:

Sub Ajout1xlsx()

Dim NomFichier As Workbook

Dim wk1 As Workbook

Dim NomFeuille As Worksheet

Dim NomModele As Variant

Set NomFichier = ThisWorkbook

' Ouverture boite information

MsgBox "Choisir le fichier Sageir"

'Ouverture fenêtre de choix

NomModele = Application.GetOpenFilename("Excel Files, *.csv")

' Si aucun choix arrêt

If NomModele = False Then Exit Sub

Workbooks.Open NomModele

Set wk1 = ActiveWorkbook

ICI, le code me permettant de séparer la colonne avant d'appliquer le filtre

Range("A1").AutoFilter Field:=1, Criteria1:=Array("2A Carpentras", "2A Avignon", "2A Apt", "2A Tarascon"), Operator:=xlFilterValues

ICI, le code pour la copie des données de résultats

End Sub

En espérant avoir été assez clair, sans fichier .

Merci beaucoup pour l'aide et l'aiguillage sur l'outil à utiliser.

Bonjour,

Avec ta version Excel, Regarde du côté de Récupérer et transformer (Power Query).

Ruban, Données, Récupérer et transformer, A partir d'un fichier Texte/CSV.

Sélectionne ton fichier et valide.

Suis les indications et valide avec Charger, Charger dans..., dans un tableau (choisis l'emplacement de destination).

Cdlt.

Merci pour les informations.

Mais par contre, cette modif est a faire a chaque fois que l'on veut importer un nouveau fichier , non ?

En fait, je voudrais qu'une personne sans connaissance, télécharge le fichier source , ouvre mon fichier et fait juste un clic sur un bouton ou action automatique pour que ce soit mis a jour.

C'est faisable avec power ?

Car avec ta méthode, que j'ai essayé avant de poster, J'avais l'impression que je pouvais pas sélectionner juste le fichier source sans refaire tout le formatage et import ! Après, j'ai sûrement loupé un truc aussi, je suis pas top en Excel, VBA, query .

Merci

Re,

As-tu un csv (anonymisé si nécessaire) à joindre à ta demande ?

Cdlt.

Impossible, trop de données sensibles.

Mais en gros :

Tout est en A1 pour les titres de colonne. : 11 titre séparé par ",".

Et valeur a partir de A2 jusqu'à AXXX (inconnue) : 11 valeur/texte séparé par ";"

C'est tout

Re,

Un exemple dans le fichier joint.

Ouvre le xlsm et fait un double-clic en A2. Sélectionne le CSV et valide.

A te relire.

15open-csv-file.xlsm (27.30 Ko)
7book1.csv (3.25 Ko)

Bonjour,

Un petit retour sur la proposition ?

Cdlt.

Désolé pour la réponse tardive mais je n'ai pas utilisé la fonction car trop long à utiliser et entre temps nous avons eu une évolution des fichiers.

Rechercher des sujets similaires à "macro separation donnee cvs tableau"