Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ouvrir un fichier texte en format texte

5 réponses
Avatar
Laurent
Bonjour,
J'ai des problèmes de formatage lorsque j'ouver un fichier texte avec des
colonnes en standard, pour éviter ce problème je convertis toutes les
colonnes en texte.
Mon problème est le suivant : les fichiers texte que ma macro ouvre ne font
pas tous le même nombre de colonne.
Existe t-il une solution pour convertir toutes les colonnes (quelque soit le
nombre de colonne) en format texte ?

Merci d'avance de votre aide
Laurent

5 réponses

Avatar
francois.forcet
Salut à toi

Tu peux peut être rajouter en fin de ta macro cette ligne :

Range("A1", Range("IV1").End(xlToLeft)).EntireColumn.NumberFormat =
"@"

Qui mettra au format texte toutes les colonnes de la 1° à la dernière
utilisée (la 1° cellule de cette dernière colonne ne devra être vid e)

Celà devrait convenir

Dis moi !!!!
Avatar
francois.forcet
Rebonjours à toi
Autre solution qui supprime la condition de la 1° cellule de la
dernière colonne à mettre en fin de ta macro :

Range("A1",
Range(ActiveCell.SpecialCells(xlLastCell).Address)).EntireColumn.NumberForm at
= "@"

C'est peut être mieux

Dis moi
Avatar
Laurent
Bonjour,
Merci pour la réponse, mais elle ne répond pas à ma problématique.
ce que je voudrais c'est transformer le données en texte afin qu'elles
soient identique à celle de mon fichier texte.
Si je met le format texte après conversion, mes données se trouvent déjà
fausses sur certains postes (dates passées au format américain, perte de
séparateur décimal, etc.)

Je voudrais donc dans la fonction opentext ne pas mettre tous les array car
je ne sais pas combien de colonne je vais avoir.
Workbooks.OpenText Filename:="Fichier.txt", _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited,
TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:=True,
Semicolon:=True, _
Comma:úlse, Space:úlse, Other:úlse,
FieldInfo:=Array(Array(Array(1, 2), Array(2, 2), Array(3, 2), Array....

Pour l'instant j'ai triché en mettant 50 array (je ne pense pas avoir plus
de 50 colonnes), cela fonctionne mais je ne trouve pas le code très propres.

Merci d'avance si vous avez une autre idée.
Laurent

"" a écrit :

Rebonjours à toi
Autre solution qui supprime la condition de la 1° cellule de la
dernière colonne à mettre en fin de ta macro :

Range("A1",
Range(ActiveCell.SpecialCells(xlLastCell).Address)).EntireColumn.NumberFormat
= "@"

C'est peut être mieux

Dis moi



Avatar
francois.forcet
Rebonjours Laurent

Tu pourrais ouvrir une première fois ton fichier text sans le
FieldInfo :

Workbooks.OpenText Filename:="Fichier.txt", _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited,
TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:=True,
Semicolon:=True, _
Comma:úlse, Space:úlse, Other:úlse,


Avec ce bout de code tu repères le nombre de colonnes :

Colonne = ActiveCell.SpecialCells(xlLastCell).Column

Puis tu fermes sans l'enregistrer ce fichier :

ActiveWorkbok.Close saveChanges := False

Tu constitues ton FieldInfo avec cette donnée ainsi :

For i = 1 To Colonne
Instruction = Instruction & "Array(" & i & ", 2),"
Next
Instruction = Mid(Instruction, 1, Len(Instruction) - 1)

Tu inclus cette variable dans ton code :

Workbooks.OpenText Filename:="Fichier.txt", _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited,
TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:=True,
Semicolon:=True, _
Comma:úlse, Space:úlse, Other:úlse,
FieldInfo:=Array(Array(Instruction))

Je n'ai pas testé n'ayant pas ton fichier mais à mon sens je ne vois
pas pourquoi celà ne fonctionnerait pas

Fais des testes et dis moi !!!!
Avatar
Laurent
Bonjour,
Efectivement ca peux répondre à mon besoin, j'y avais pensé, mais je ne
trouve pas cette solution très "propre", tant pis je vais rester sur mes 50
array.

Merci quand même

Laurent

"" a écrit :

Rebonjours Laurent

Tu pourrais ouvrir une première fois ton fichier text sans le
FieldInfo :

Workbooks.OpenText Filename:="Fichier.txt", _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited,
TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:=True,
Semicolon:=True, _
Comma:úlse, Space:úlse, Other:úlse,


Avec ce bout de code tu repères le nombre de colonnes :

Colonne = ActiveCell.SpecialCells(xlLastCell).Column

Puis tu fermes sans l'enregistrer ce fichier :

ActiveWorkbok.Close saveChanges := False

Tu constitues ton FieldInfo avec cette donnée ainsi :

For i = 1 To Colonne
Instruction = Instruction & "Array(" & i & ", 2),"
Next
Instruction = Mid(Instruction, 1, Len(Instruction) - 1)

Tu inclus cette variable dans ton code :

Workbooks.OpenText Filename:="Fichier.txt", _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited,
TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:=True,
Semicolon:=True, _
Comma:úlse, Space:úlse, Other:úlse,
FieldInfo:=Array(Array(Instruction))

Je n'ai pas testé n'ayant pas ton fichier mais à mon sens je ne vois
pas pourquoi celà ne fonctionnerait pas

Fais des testes et dis moi !!!!