Exploitation d'un fichier texte

Bonsoir,

A partir de fichiers .txt rassemblant des données sous forme de texte que j'ouvre dans Excel, je récupère le contenu présent dans ces fichiers à partir du premier paragraphe après Description, jusqu'à la fin. Chacun de ces fichiers adopte la même mise en forme, seul le nombre de paragraphes est amené à varier d'un fichier à l'autre.

Mon problème est le suivant: selon le fichier, je ne sais pourquoi, Excel interprète mal le texte en indiquant (exemple du fichier joint) pour les premières lignes des paragraphes #NOM?, très certainement à cause du tiret qu'il interprète comme le début d'une formule.. Du coup, je ne peux rapatrier mon texte comme je le souhaite. Auriez-vous une idée pour empêcher cette mauvaise interprétation d'Excel, et que je puisse ainsi récupérer l'ensemble des données des fichiers .txt sans souci ?

Merci d'avance.

21donnees.txt (833.00 Octets)

Bonjour M@tix,

Passe par le menu Excel pour ouvrir ton fichier texte (Fichier / Ouvrir). Ça t'ouvrira l'assistant importation de texte. A la 3è étape fait comme ceci :

import texte

Bonjour,

Merci pour ta réponse vba-new. Cependant, je crains que ce que tu me proposes ne convienne pas, car l'ouverture du fichier se fera automatiquement via une macro pour aller récupérer le texte et le placer ailleurs. L'objectif est justement que je n'intervienne pas dans le processus... Une autre idée peut-être ?

Re,

Peux-tu poster la partie du code qui t'ouvre le fichier texte ? On peut peut-être l'adapter si tu le souhaites.

Bien entendu, le voici:

Workbooks.OpenText Filename:="C:\chemindufichier\donnees.txt", Origin:=xlWindows, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=False

Si ton fichier texte ne comporte que trois colonne, remplace ton bout de code par celui-ci :

Workbooks.OpenText Filename:="C:\chemindufichier\donnees.txt", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), Array(2, 1), Array(3, 1))

Ça te mettra la première colonne au format texte.

Merci, ça a l'air de fonctionner ! Juste pour info quand même, comment le code que tu as rajouté fonctionne ? Par exemple si je voulais mettre également la seconde colonne au format texte, je devrais faire comment ?

Autre point: je récupère bien le texte en dessous de Description comme je le souhaite, mais je récupère aussi l'intervalle (variable selon les fichiers ) présent entre Description et le premier paragraphe.. Aurais-tu une idée pour éviter cela et obtenir directement le texte ?

m@tix a écrit :

comment le code que tu as rajouté fonctionne ?

Tout se joue dans
FieldInfo:=Array(Array(1, 2), Array(2, 1), Array(3, 1))

Le 2 qui se trouve dans Array(1, 2) te dit qu'il traitera la colonne 1 comme du texte (2=xlTextFormat)

En colonne 2 (Array(2, 1)), la colonne sera considérée de format Standard (1=xlGeneralFormat)

Pour voir les types de données possibles, tape XlColumnDataType dans l'aide VBA.

m@tix a écrit :

Autre point: je récupère bien le texte en dessous de Description comme je le souhaite, mais je récupère aussi l'intervalle (variable selon les fichiers ) présent entre Description et le premier paragraphe.. Aurais-tu une idée pour éviter cela et obtenir directement le texte ?

Il faudrait faire ce traitement après l'importation (ça me parait plus simple) :
lignDeb = Range("A:A").Find("Description", LookIn:=xlValues, lookat:=xlWhole).Row + 1
lignFin = Range("A:A").Find("- Premier paragraphe", LookIn:=xlValues, lookat:=xlPart).Row - 1
Rows(lignDeb & ":" & lignFin).Delete

On récupère la ligne qui se trouve après "Description" et celle qui se trouve avant le premier paragraphe et on supprime le tout.

Merci beaucoup pour tes précisions.

Et le reste de ton code fonctionne (via une petite retouche pour l'adapter à tous mes fichiers), c'est parfait !

Encore merci, bonne journée.

Rechercher des sujets similaires à "exploitation fichier texte"