Récuperer fichier .txt dans Excel

  • Initiateur de la discussion Initiateur de la discussion Everlast03
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Everlast03

XLDnaute Occasionnel
Bonjour,

Je voudrais récupérer un fichier texte grâce à une macro.
D'abord je voudrais lire dans un autre fichier texte (qui sera modifié en fonction de ce sur quoi on travaille) le nom du fichier.

Exemple : Je stock le nom du fichier que je vais coller dans Excel dans le fichier C:\Temp\ListeFichier.txt

Dans mon ListeFichier.txt:
1ère ligne : Chemin du fichier que je veux charger dans Excel ( ex : C:\Program files\fichiertest.txt

Je veux donc que ma macro aille lire le ListeFichier.txt pour y trouver le chemin du fichier à extraire, une fois ceci fait, j'extraie le contenu dans la page "Données" de Excel,


J'ai déjà réalisé une partie la macro mais je suis bloqué.
Le but de cette macro est de n'avoir a changé que le chemin dans le fichier ListeFichier
Pouvez-vous m'aider svp 😱

Code:
Sub Auto_open()
'
' Tableau de bord synthétique
' Macro enregistrée le 05/10/2004 par G. Derue
'
Dim FicDon As String
Dim Lig As String
Dim Ligne As Integer, Texte As String, DateMAJ As String
Dim I As Integer

Sheets("Données").Select    ' Tableau de bord

    ' Lecture de la liste des fichiers de mesure
If Dir("C:\Temp\ListeFichiers.txt", vbNormal) = "" Then
    MsgBox "Créer le fichier : C:\Temp\ListeFichiers.txt qui contient le nom de fichier avec le chemin complet", vbInformation, "Liste fichiers"
    Exit Sub
End If
    ' Lecture nom de fichier avec le chemin complet
Open "C:\Temp\ListeFichiers.txt" For Input As #1
Line Input #1, FicDon
Close #1
    ' lecture des données
Open FicDon For Input As #1
    ' Importation données
Ligne = 0
Do Until EOF(1)
    Line Input #1, Lig
    Ligne = Ligne + 1
    For I = 1 To 2
        Cellule = I
        Call Extract(Lig & " ", I, Texte)
        Call AData(Texte, I, Ligne)
    Next I
Loop
Close #1

End Sub
Sub Extract(Lig As String, Imot As Integer, Texte As String)
' Lig ligne lue
' Imot position de la donnée dans Lig
' Donnée extraite

Dim Incd As Integer, Incf As Integer

Incf = 0
For I = 1 To Imot
    Incd = Incf
    Incf = InStr(Incd + 1, Lig, " ")
Next I
Texte = Mid(Lig, Incd + 1, Incf - Incd - 1)

End Sub
Sub AData(Donnée As String, ICol As Integer, ILig As Integer)

Dim Col As String

Col = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

Nom = Mid(Col, ICol, 1) + Mid(Str(ILig), 2)
Range(Nom).Select
ActiveCell.FormulaR1C1 = Donnée

End Sub
 
Re : Récuperer fichier .txt dans Excel

Bonjour,

Voici le décodage en ordre de marche :

Option Explicit

Sub Auto_open()
'
' Tableau de bord synthétique
' Macro enregistrée le 05/10/2004 par G. Derue
'
Dim FicDon As String
Dim Lig As String
Dim Ligne As Integer, Texte As String, DateMAJ As String
Dim I As Integer, Cellule As Integer

Sheets("Données").Select ' Tableau de bord

' Lecture de la liste des fichiers de mesure
If Dir("C:\Temp\ListeFichiers.txt", vbNormal) = "" Then
MsgBox "Créer le fichier : C:\Temp\ListeFichiers.txt qui contient le nom de fichier avec le chemin complet", vbInformation, "Liste fichiers"
Exit Sub
End If
' Lecture nom de fichier avec le chemin complet
Open "C:\Temp\ListeFichiers.txt" For Input As #1
Line Input #1, FicDon
Close #1
' lecture des données
Open FicDon For Input As #1
' Importation données
Ligne = 0
Do Until EOF(1)
Line Input #1, Lig
Ligne = Ligne + 1
Call Extraction(Ligne, Lig & " ")
Loop
Close #1

End Sub
Sub Extraction(Ligne As Integer, DonnéesLig As String)
'Césure de mot dans une ligne
' Réception n° de ligne (Ligne) et données (DonnéesLig) de cette ligne
'
Dim NbEspaces As Integer, NbTabulation As Integer
Dim Carac As Integer, Colonne As Integer
Dim DébutMot As Integer, FinMot As Integer
Dim Séparatif As String, Mot As String
Dim Fin As Boolean
Dim Relevé As Double
'
NbEspaces = Len(DonnéesLig) - Len(Replace(DonnéesLig, " ", ""))
NbTabulation = Len(DonnéesLig) - Len(Replace(DonnéesLig, Chr(9), ""))
Séparatif = " "
If NbTabulation > 0 Then Séparatif = Chr(9)
'
DébutMot = 1
Colonne = 0
'
Do
FinMot = InStr(DébutMot, DonnéesLig, Séparatif)
Mot = Mid(DonnéesLig, DébutMot, FinMot - DébutMot)
If InStr(1, Mot, "+") Then
Relevé = Replace(Mot, ".", ",")
Mot = Replace(CDbl(Relevé), ",", ".")
Range("A1").Offset(Ligne, Colonne).NumberFormat = "@"
End If
Range("A1").Offset(Ligne, Colonne) = Mot
DébutMot = FinMot + 1
Colonne = Colonne + 1
If InStr(DébutMot, DonnéesLig, Chr(9)) = 0 Then Séparatif = " "
Loop Until DébutMot > Len(DonnéesLig)

End Sub
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
362
Réponses
3
Affichages
537
Réponses
2
Affichages
300
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
638
Retour