Everlast03
Messages postés29Date d'inscriptionmardi 27 avril 2010StatutMembreDernière intervention 8 décembre 2014
-
3 juin 2010 à 11:47
Everlast03
Messages postés29Date d'inscriptionmardi 27 avril 2010StatutMembreDerniè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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
Everlast03
Messages postés29Date d'inscriptionmardi 27 avril 2010StatutMembreDerniè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 ...
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