Récuperer fichier .txt dans Excel

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 :eek:

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
 

camarchepas

XLDnaute Barbatruc
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

  • Décode.xls
    37.5 KB · Affichages: 118

Discussions similaires

Statistiques des forums

Discussions
312 213
Messages
2 086 307
Membres
103 174
dernier inscrit
OBUTT