Récuperer fichier .txt dans Excel

Everlast03 Messages postés 29 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 8 décembre 2014 - 3 juin 2010 à 11:47
Everlast03 Messages postés 29 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 8 décembre 2014 - 3 juin 2010 à 13:45
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éaliser une partie la macro mais je suis bloqué.
Pouvez-vous m'aider


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

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
3 juin 2010 à 12:53
Salut
La lecture du nom de fichier dans le fichier liste semble correct.
Peut-être serait-il judicieux, après récupération du nom du fichier, de vérifier qu'il existe bien avant de l'ouvrir.

Quel est ton problème ?
Dans la récupération de ce nom de fichier ou bien dans la lecture des données ?
Ne nous embrouille pas avec ce qui marche, dis nous ce qu'il y a dans ton fichier de données, où tu veux les mettre ... et quelle erreur tu as.

As-tu suivi l'évolution de ton programme en pas à pas ?
--> F9 sur une ligne et quand le programme s'y arrêtera, utilise F8 pour avancer ligne par ligne. En survolant les variables avec la souris, tu auras son contenu.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Everlast03 Messages postés 29 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 8 décembre 2014
3 juin 2010 à 13:07
Le problème est que je n'arrive pas a copier l'intégralité de mon fichier texte dans ma feuille excel. La, je copie que sur 2 colonnes, alors que mon fichier texte lui comporte 6 colonnes.
De plus mon fichier texte ne comporte pas tout le temps 6 colonnes (du aux sauts de lignes, référence des tableaux etc ...) j'ai donc un bug ...


Exemple :
599 5.99000e+002 4.99898e+002 6.69628e+003 6.69628e+003


**************************************************************************************

Creation time 5/10/2010 13:42:44
Analyzer Wtf:Ord1
Result type Ord 1
Response Name [1]-Xcacc
Average Type Exponential
Average Number (#) 1
Average Domain Spectral

Index Slice number Time Tach.Ext Ang speed [1]-[Tach] Ext. sync. 1 Y_Module Y_Phase
# s RPM µm °
1 1.00000e+000 1.98882e+002 7.06359e+002 7.46257e+000 9.54433e+001
2 2.00000e+000 1.99176e+002 7.19234e+002 7.40822e+000 9.49080e+001
0
Everlast03 Messages postés 29 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 8 décembre 2014
3 juin 2010 à 13:45
Seul le tableau de valeurs m'intéresse en fait ...
0
Rejoignez-nous