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.