Je veux développer une macro où, dans ma feuille de calcul Excel, je tape une date dans une cellule spécifique et la macro ira dans un dossier contenant des fichiers texte. Une base de données que vous pourriez dire. Je veux qu'il trouve le nom de fichier correspondant qui est écrit comme une date, placez les données dans un délimiteur et collez-le directement dans les cellules ci-dessous, là où j'ai initialement mis la date.
Le dossier sera toujours au même endroit et les fichiers texte seront tous mis en forme DD_MM_YYYY. Et les cellules ci-dessous seront toujours vides
Quelques photos pour rendre ce que je demande plus facile à comprendre.

C'est plus simple que vous ne le pensez, car vous pouvez appeler l'Assistant Importation de texte (ou plutôt, vous pouvez utiliser ses fonctionnalités) depuis une macro, il n'est pas nécessaire d'écrire un analyseur CSV ou quelque chose de ce genre.
En fait, tout ce que j'ai fait avec la macro ci-dessous est d'utiliser la fonction d'enregistrement intégrée, puis de la modifier un peu pour répondre à vos besoins.
Utiliser la macro:
Sauvegardez votre fichier Excel actuel en cas de problème.
Changer la définition de folder
dans la macro pour être le chemin contenant tous vos fichiers de données - assurez-vous d'inclure une barre oblique.
Sélectionnez la cellule d'en-tête des colonnes, qui doit contient le nom d'un de vos fichiers - y compris l'extension de fichier. Vous pouvez modifier ce champ après le chargement des données si vous souhaitez supprimer l'extension.
Exécutez la macro.
actes
Il prendra le nom de fichier de la cellule en cours, regardez dans le fichier spécifié folder
et ouvrez le fichier spécifié dans la cellule. Ensuite, il l'importera en CSV, exactement une cellule au dessous de la cellule sélectionnée (au démarrage de la macro).
En tant que tel, il écrasera probablement les cellules situées sous la cellule sélectionnée lors de l'exécution de la macro. La prudence est recommandée.
Si le fichier n'est pas trouvé ou si une autre erreur se produit, cela échouera avec une zone d'erreur VBA normale, sans messages d'erreur amis.
Code macro
Certains peuvent probablement être coupés - comme je l’ai dit, je l’obtiens d’un enregistrement plutôt que d’apprendre à utiliser QueryTables
moi-même - mais cela ne fera pas mal comme il est, et semble fonctionner de manière fiable.
Sub LoadFromFile()
Dim fileName As String, folder As String
folder = "C:\Path\To\Your\Files\"
fileName = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("A1").Select
With ActiveSheet.QueryTables _
.Add(Connection:="TEXT;" & folder & fileName, Destination:=ActiveCell)
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub