Bonjour,
Je suis débutant et j'ai besoin de votre aide. Enfait, mes données sont stockées dans des fichiers dont l'extension est txt. Comment puis-je faire des calculs dans une feuille excel sur ces données dont la source est ces fichiers txt?
Bonjour,
Je suis débutant et j'ai besoin de votre aide. Enfait, mes données sont stockées dans des fichiers dont l'extension est txt. Comment puis-je faire des calculs dans une feuille excel sur ces données dont la source est ces fichiers txt?
Comment se présentent tes données dans ton fichier texte ?
Par ligne sans séparateur ?
Par ligne avec séparateur ? Lequel ?
A+
Effectivement les données sont en lignes avec des entêtes dans la première ligne et le separateur utilisé est l'espace.
A+
Je ne vois pas, je peux interpréter ça de deux manières,
ouEntête_Ligne1
Donnée1 Donnée2 Donnée3 Donnée4 Donnée5 Donnée6
Entête_Ligne2
Donnée1 Donnée2 Donnée3 Donnée4 Donnée5 Donnée6
Mais bon, dans le premier cas tu n'as pas d'espace pour l'entête et donc, tu peux tester la ligne et si elle ne contient pas d'espace, c'est l'entête ; la ligne suivante, les données de la ligne ; le nombre d'espaces + 1 le nombre de colonnes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Entête_Ligne1 Donnée1 Donnée2 Donnée3 Donnée4 Donnée5 Donnée6 Entête_Ligne2 Donnée1 Donnée2 Donnée3 Donnée4 Donnée5 Donnée6 Entête_Ligne3 Donnée1 Donnée2 Donnée3 Donnée4 Donnée5 Donnée6
Sinon, le premier mot de la ligne est l'entête.
Je prends la première hypothèse. Tu devrais pouvoir t'en sortir avec ça
Si c'est la seconde hypothèse, tu devrais pouvoir trouver tout seul
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Open "D:\LeFichier.Text" For Input As #1 While Not EOF(1) Input #1, ligne if instr(LaLigne," ") = 0 then entête = LaLigne else LeTableau = Split(LaLigne) 'donne un tableau des valeurs de chaque colonne de la ligne 'on passe dans Excel NoLigne = NoLigne + 1 For i = 1 to Ubound(LeTableau) Cells(NoLigne, i) = LeTableau(i) Next endif Wend Close #1![]()
A+
En fait les données sont sous cette formeMerci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Date Devise Ietr Portefeuille Etranger CT Portefeuille Etranger MT Placement a terme devises Comptes etranger remu 2/1/2007 AED 1 0 0 4 2/1/2007 CAD 1 0 0 2 2/1/2007 CHF 1 0 0 21 2/1/2007 DKK 1 0 0 0do
Alors tu as beaucoup plus simple, ouvre ton fichier.txt avec Excel, séparateur " " (espace)
Attention : Tu auras un pb pour la première ligne dans laquelle tu devras remplacer, dans le fichier texte (avec NotePad ou un autre éditeur de texte) les espaces présents dans les noms d'entêtes par underscore, sinon, pour "Portefeuille Etranger" tu auras deux colonnes en entête (alors qu'avec "Portefeuille_Etranger" tu n'en auras qu'une.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Workbooks.OpenText Filename:="D:\Fichier.txt", Origin:= _ xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlNone, _ ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False _ , Space:=False, Other:=True, OtherChar:=" "
Si tu utilises le code que je t'ai passé, idem pour l'entête
Par contre, tu "peux" supprimer
mais tu n'es pas obligé, le code fonctionnera tel quel puisque toutes les lignes auront des espaces.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if instr(LaLigne," ") = 0 then entête = LaLigne else ' et le endif
Ceci dit, j'espère qu'il n'y a qu'un seul espace à la fois comme séparateur et non plusieurs...
Tu dis
A+
et si le séparateur été une tabulation , ce qui semble plus logique qu'un espace...![]()
![]()
Alors, bbil, on n'est pas bien réveillé ? ça ne te ressemble pasIci, l'indication
Mais tu as raison, il n'y a rien de plus ressemblant dans un éditeur qu'un espace et une Tabulation...
Finalement, merci d'avoir soulevé ce lièvre
Edit
Donc, si le séparateur s'avère être une tabulation, on corrige pour
C'est plus court
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Workbooks.OpenText Filename:="D:\Fichier.txt", Origin:= _ xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlNone, _ ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _ , Space:=False, Other:=False
Re Edit
Auquel cas, on n'a pas à modifier la ligne d'entête...
eu pour ce qui est d'être réveillé ... moi tout ce que j'ai vu c'est que la : #5 ... c'est des tabulations et pas des espaces !!Envoyé par ouskel'n'or
Je pense comme toi, après réflexion. D'ailleurs 1 espace m'étonnait aussi puisque j'ai écritJe retire ce que j'ai dit, t'étais plus mieux réveillé que moi. Tu prends quoi comme café ?Ceci dit, j'espère qu'il n'y a qu'un seul espace à la fois comme séparateur et non plusieurs...![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager