Problème d'utilisation de Line Input #

G

Gizmo

Guest
Bonjour,

Suite à une première demande sur l'importation de fichiers de plus de 256 colonnes, j'ai eu une réponse de Lord Nelson qui fonctionne très bien (cf : http://www.excel-downloads.com/html/French/forum/read.php?f=1&i=116063&t=115988).

Par contre, j'ai un souci lors de l'utilisation des fichiers texte originaux. Si je les lis directement, Le code VBA (plus précisément Line Input #) va charger tout le fichier en le considérant comme une simple ligne.
Si j'ouvre le fichier texte dans Word et le ferme directement après (en sauvegardant les modifs que Word apporte), le code VBA considère les lignes en tant que telles.

Une analyse des 2 fichiers (original et Word) en hexadécimal ne montre aucune différence (sauf un CR+LF de plus en fin de fichier) alors qu'un soft de comparaison indique des changements (impossible de mettre la main sur ces différences malheureusement, elles n'apparaissent pas à l'écran).

A en croire la description de Line Input dans l'aide VBA, il faut un CR ou un CR+LF pour déterminer une fin de ligne. Le CR+LF est bien présent dans le fichier origine mais rien n'y fait, c'est comme si il était transparent. Par contre, la prise en compte lors de la lecture du fichier modifié par Word est OK...

Y a 'il quelqu'un qui pourrait me dire si il y comprend un peu plus que moi et si Line Input peut être configuré pour prendre en compte le format texte original que je récupère? Peut-il s'agir tout simplement d'un formatage ANSI/ASCII particulier?

Merci,
Giz.

PS : une ouverture en direct du fichier original par Excel dans une feuille de calcul (via le soft ou VBA) ne pose aucun problème.
 

Pièces jointes

  • Original.zip
    34.4 KB · Affichages: 68
  • Original.zip
    34.4 KB · Affichages: 61
  • Original.zip
    34.4 KB · Affichages: 62
J

jmps

Guest
Bonjour Gizmo,

Bon ne t'inquiètes pas, y'a pas de Gremlins dans ton VBA. Lol ! Juste que tes CR (Carriage Return, 0D en hexa ou 13 en décimal) sont en fait des LF (Line Feed, 0A ou 10). Or, comme le précise l'aide, il faut un CR ou un CR+LF pour que Line Input # le reconnaisse comme tel. Ici t'u n'as que le LF, il n'en tient donc pas compte. Word visiblement le remplace par un CR+LF c'est pourquoi ça fonctionne après "modif" dans Word.

Pour régler ton problème soit tu fais comme tu dis en enregistrant avec Word, soit tu remplaces tes 0A en 0D avec ton éditeur Hexa. Autrement si tu as la possibiliter de modifier le programme qui génère ton fichier, tu sais ce qu'il te reste à faire.

J'espère que cela t'aidera.

Bon après-midi.

José
 
G

Gizmo

Guest
Salut José,
Bon ben là je ne comprends plus rien si je fais confiance à mon éditeur hexa (Ultra Edit) car il m'annonce bien le CR+LF (soit la séquence 0D 0A)... D'où mon post sur le forum pour avoir un avis!!
Si tu peux éditer le fichier et qu'il comporte effectivement juste le Line Feed alors c'est donc tout bon! Sinon... il y a anguille sous roche pour ne pas dire poulet après minuit!! lol.

Bonne soirée.
Giz.
 
J

jmps

Guest
Bonjour Gizmo,

Le mien d'éditeur Hexa c'est Hex Editor (V2) de HHD Software. Il est gratuit et je l'aime bien. Mais peut-être qu'il ne t'aime pas toi car il ne trouve pas un seul 0D dans ton fichier. Que des 0A. Et pourtant je le mouille jamais ;°))
Où va-t-on si les éditeurs Hexadécimaux ne s'entendent plus entre eux ?

Plus sérieusement, je suppose que ton fichier vient d'une autre plate-forme que Windows. Je sais qu'en Unix les CR+LF sont gérés d'une autre façon. Sur Mac aussi je crois.

Si tu n'as pas moyen de modifier le programme qui génère le fichier, il te reste la solution d'ouvrir ton fichier en binaire et de le lire octet par octet avec un test sur 0A. Ca sera un poil plus compliqué mais si tu sais gérer des Line Input #, tu dois pouvoir t'en sortir.

Bonne journée.

José
 

Discussions similaires

Statistiques des forums

Discussions
312 764
Messages
2 091 862
Membres
105 082
dernier inscrit
saragestion