Nom de fichier dans une case
Bonjour,
Afin de rapatrier des données pour les analyser mon fichier Excel ouvre un fichier .txt (avec un code VBA), copie les données sur une feuille, ferme le fichier .txt et ensuite les données sont traitées et il en ressort un tableau avec différentes infos.
alors une question comme il existe environ 280 fichiers .txt est-il possible après l'ouverture d'un des fichier .txt de stocker automatiquement le nom du fichier dans une case de mon fichier Excel afin de savoir à quoi se rapporte les données?
en effet je travail à une évolution de mon fichier pour pouvoir analyser les données par 10 fichiers mais le pb est qu'il faut avoir le nom pour si retrouver après.
Ci joint le code d'import du fichier .txt il faudrait mettre le nom en case CK8.
Par avance je vous remercie pour votre aide.
Sub Import()
Dim contenuligne As Variant
Dim ligne As Integer
'Fichier = "import.txt"
Dim CheminEtTypeFichier As String, Fichier As String
Columns("AK:AK").Select
Application.CutCopyMode = False
Selection.ClearContents
'Variable à définir : Le chemin par défaut
CheminEtTypeFichier = "Choix du fichier"
Fichier = BrowseFile(CheminEtTypeFichier)
If Fichier <> "" Then
Split(Fichier, "")(UBound(Split(Fichier, ""))) & """"
Else
MsgBox "Aucune sélection a été effectuée."
End If
Open Fichier For Input As #1
Do While Not EOF(1) And ligne < 601
Line Input #1, contenuligne
Range("AK" & 1 + ligne).Value = contenuligne
ligne = ligne + 1
Loop
Close #1
End SubFunction BrowseFile(CheminEtTypeFichier) As String
With Application.FileDialog(msoFileDialogFilePicker)
'Définit un titre pour la boîte de dialogue
.Title = "CHOISIR LE FICHIER A IMPORTER"
'Empêcher la multi-sélection
.AllowMultiSelect = False
'Répertoire par défaut suivi du type de fichier par défaut
.InitialFileName = CheminEtTypeFichier
'Efface les filtres existants.
.Filters.Clear
'Définit une liste de filtres pour le champ "Type de fichiers".
.Filters.Add "Classeurs Excel et Fichier Texte", "*.TXT; *.CSV; *.xls*"
'Définit le filtre qui s'affiche par
'défaut dans le champ "Type de fichiers "."
.FilterIndex = 13
'Indique le type d'affichage dans la boîte de dialogue
'(exemple visualisation des propriétés)
.InitialView = msoFileDialogViewProperties
'Affiche la boîte de dialogue
.Show
If .SelectedItems.Count > 0 Then
BrowseFile = .SelectedItems(1)
Else
BrowseFile = ""
End If
End With
End FunctionJ'ai mis le code pour info mais je n'ai besoin que du code qui va me mettre le nom du fichier dans ma case.
bonjour,
dans quelle cellule veux-tu le nom du fichier ?
bonjour,
voici, j'ai mis en commentaire l'instruction qui donne une erreur, ne sachant pas exactement le résultat attendu.
Sub Import()
Dim contenuligne As Variant
Dim ligne As Integer
'Fichier = "import.txt"
Dim CheminEtTypeFichier As String, Fichier As String
Columns("AK:AK").Select
Application.CutCopyMode = False
Selection.ClearContents
'Variable à définir : Le chemin par défaut
CheminEtTypeFichier = "Choix du fichier"
Fichier = BrowseFile(CheminEtTypeFichier)
If Fichier <> "" Then
'Split(Fichier, "")(UBound(Split(Fichier, ""))) & """"
Range("CK8").Value = Fichier
Else
MsgBox "Aucune sélection a été effectuée."
End If
Open Fichier For Input As #1
Do While Not EOF(1) And ligne < 601
Line Input #1, contenuligne
Range("AK" & 1 + ligne).Value = contenuligne
ligne = ligne + 1
Loop
Close #1
End SubBonjour,
Merci j'ai bien le nom qui s'affiche mais il y a le chemin du fichier alors est-il possible de n'avoir que le nom du fichier peut-être en passant par une cellule intermédiaire et en mettant une formule en CK8 qui ne va garder que le nom du fichier.
encore merci
bonjour/bonsoir,
adaptation du code
Sub Import()
Dim contenuligne As Variant
Dim ligne As Integer, v
'Fichier = "import.txt"
Dim CheminEtTypeFichier As String, Fichier As String
Columns("AK:AK").Select
Application.CutCopyMode = False
Selection.ClearContents
'Variable à définir : Le chemin par défaut
CheminEtTypeFichier = "Choix du fichier"
Fichier = BrowseFile(CheminEtTypeFichier)
If Fichier <> "" Then
v = Split(Fichier, Application.PathSeparator)
Range("CK8") = v(UBound(v))
Else
MsgBox "Aucune sélection a été effectuée."
End If
Open Fichier For Input As #1
Do While Not EOF(1) And ligne < 601
Line Input #1, contenuligne
Range("AK" & 1 + ligne).Value = contenuligne
ligne = ligne + 1
Loop
Close #1
End SubBonjour,
super j'ai juste le nom du fichier.un grand merci vous êtes au top.
bonne continuation