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

Import Cobol => Excel

6 réponses
Avatar
JC Duce
Bonjour,

Je suis en train d'écrire une macro pour importer des fichiers TXT issus
d'un gros système IBM vers Excel pour les formater automatiquement par
colonnes.

Je bute sur un caractère spécial qui est le "LOW-VALUE", codé en héxa par
x'00'.

En effet, en utlisant la syntaxe << Line Input #1, ligneValeur >> pour lire
séquentiellement les lignes de mon fichier texte, tous les caractères x'00'
sont supprimés de la variable ligneValeur avant même que je puisse intervenir
pour les rechercher et les remplacer par des expaces par exemple.

Pourtant, le Bloc-Note Windows sait bien les détecter puisqu'il m'affiche un
espace à la place.

Comment pourrais-je dire à Excel de lire la ligne sans AUCUNE modification,
comme le fait Notepad ?

Merci de votre aide.

6 réponses

Avatar
michdenis
Bonjour,

Comme je n'ai pas compris la question, je te suggère ceci
sans crainte de me tromper... ;-)))

'--------------------------------------
Sub test()
Dim I As long, Fich as String, Var as string
Fich = "c:CheminMonFichier.txt"
I = FreeFile
Open Fich For Input As #I
Var = Input(LOF(I), #I)
Close #I

'maintenant remplace dans la variable Var le
caractère que tu veux :
Var = replace(Var,"x'00'"," ",xlpart)

' au besoin tu peux reporter le contenu dans la variable Var
'dans un fichier texte que tu importeras dans Excel.

End Sub
'--------------------------------------



"JC Duce" a écrit dans le message de groupe de
discussion :
Bonjour,

Je suis en train d'écrire une macro pour importer des fichiers TXT issus
d'un gros système IBM vers Excel pour les formater automatiquement par
colonnes.

Je bute sur un caractère spécial qui est le "LOW-VALUE", codé en héxa par
x'00'.

En effet, en utlisant la syntaxe << Line Input #1, ligneValeur >> pour lire
séquentiellement les lignes de mon fichier texte, tous les caractères x'00'
sont supprimés de la variable ligneValeur avant même que je puisse intervenir
pour les rechercher et les remplacer par des expaces par exemple.

Pourtant, le Bloc-Note Windows sait bien les détecter puisqu'il m'affiche un
espace à la place.

Comment pourrais-je dire à Excel de lire la ligne sans AUCUNE modification,
comme le fait Notepad ?

Merci de votre aide.
Avatar
JC Duce
Bonjour et merci de t'etre penche sur mon cas.

En utilisant la syntaxe propose, j'obtiens une erreur "L'entree depasse la
fin du fichier".

Neanmoins, au vu de l'aide sur la fonction LOF que je ne connaissais pas, je
pense que je vais obtenir le meme resultat qu'avec Line Input.

Je vais essayer d'etre plus clair sur ma problematique.

Les chaines presentes dans le fichier contiennent des caracteres
hexadecimaux de code x'00'. Par exemple : "$ù_£%" ou _ est le fameux
caractere.

Vu dans Notepad, je vois bien la chaine "$ù_£%" de longueur 5, dans Word
egalement.
Par contre, avec Line Input sous Excel, j'obtiens "$ù£%" de longueur 4 ! Le
caractere _ a disparu et n'est pas remplace par un espace.

Comment garder cet espacement de maniere a ce que £ soit bien en 4ieme
position dans la chaine et pas en 3ieme ?

Merci encore en tout cas.

"michdenis" wrote:

Bonjour,

Comme je n'ai pas compris la question, je te suggère ceci
sans crainte de me tromper... ;-)))

'--------------------------------------
Sub test()
Dim I As long, Fich as String, Var as string
Fich = "c:CheminMonFichier.txt"
I = FreeFile
Open Fich For Input As #I
Var = Input(LOF(I), #I)
Close #I

'maintenant remplace dans la variable Var le
caractère que tu veux :
Var = replace(Var,"x'00'"," ",xlpart)

' au besoin tu peux reporter le contenu dans la variable Var
'dans un fichier texte que tu importeras dans Excel.

End Sub
'--------------------------------------



"JC Duce" a écrit dans le message de groupe de
discussion :
Bonjour,

Je suis en train d'écrire une macro pour importer des fichiers TXT issus
d'un gros système IBM vers Excel pour les formater automatiquement par
colonnes.

Je bute sur un caractère spécial qui est le "LOW-VALUE", codé en héxa par
x'00'.

En effet, en utlisant la syntaxe << Line Input #1, ligneValeur >> pour lire
séquentiellement les lignes de mon fichier texte, tous les caractères x'00'
sont supprimés de la variable ligneValeur avant même que je puisse intervenir
pour les rechercher et les remplacer par des expaces par exemple.

Pourtant, le Bloc-Note Windows sait bien les détecter puisqu'il m'affiche un
espace à la place.

Comment pourrais-je dire à Excel de lire la ligne sans AUCUNE modification,
comme le fait Notepad ?

Merci de votre aide.

Avatar
michdenis
Est-ce possible que tu publies à cette adresse Cijoint.fr ou cjoint.com
4 ou 5 lignes de ton fichier texte. Ça faciliterait la mise en place d'une
procédure fonctionnelle. (au moins les essais). Ne pas oublier de publier
ici l'adresse que tu obtiendras.



"JC Duce" a écrit dans le message de groupe de
discussion :
Bonjour et merci de t'etre penche sur mon cas.

En utilisant la syntaxe propose, j'obtiens une erreur "L'entree depasse la
fin du fichier".

Neanmoins, au vu de l'aide sur la fonction LOF que je ne connaissais pas, je
pense que je vais obtenir le meme resultat qu'avec Line Input.

Je vais essayer d'etre plus clair sur ma problematique.

Les chaines presentes dans le fichier contiennent des caracteres
hexadecimaux de code x'00'. Par exemple : "$ù_£%" ou _ est le fameux
caractere.

Vu dans Notepad, je vois bien la chaine "$ù_£%" de longueur 5, dans Word
egalement.
Par contre, avec Line Input sous Excel, j'obtiens "$ù£%" de longueur 4 ! Le
caractere _ a disparu et n'est pas remplace par un espace.

Comment garder cet espacement de maniere a ce que £ soit bien en 4ieme
position dans la chaine et pas en 3ieme ?

Merci encore en tout cas.

"michdenis" wrote:

Bonjour,

Comme je n'ai pas compris la question, je te suggère ceci
sans crainte de me tromper... ;-)))

'--------------------------------------
Sub test()
Dim I As long, Fich as String, Var as string
Fich = "c:CheminMonFichier.txt"
I = FreeFile
Open Fich For Input As #I
Var = Input(LOF(I), #I)
Close #I

'maintenant remplace dans la variable Var le
caractère que tu veux :
Var = replace(Var,"x'00'"," ",xlpart)

' au besoin tu peux reporter le contenu dans la variable Var
'dans un fichier texte que tu importeras dans Excel.

End Sub
'--------------------------------------



"JC Duce" a écrit dans le message de groupe de
discussion :
Bonjour,

Je suis en train d'écrire une macro pour importer des fichiers TXT issus
d'un gros système IBM vers Excel pour les formater automatiquement par
colonnes.

Je bute sur un caractère spécial qui est le "LOW-VALUE", codé en héxa par
x'00'.

En effet, en utlisant la syntaxe << Line Input #1, ligneValeur >> pour lire
séquentiellement les lignes de mon fichier texte, tous les caractères x'00'
sont supprimés de la variable ligneValeur avant même que je puisse intervenir
pour les rechercher et les remplacer par des expaces par exemple.

Pourtant, le Bloc-Note Windows sait bien les détecter puisqu'il m'affiche un
espace à la place.

Comment pourrais-je dire à Excel de lire la ligne sans AUCUNE modification,
comme le fait Notepad ?

Merci de votre aide.

Avatar
JC Duce
Le voici : http://www.cijoint.fr/cjlink.php?file=cj201004/cijy1CHXny.txt

Ce n'est qu'un extrait, le caractere posant probleme etant le 8ieme ici.

Merci de ton aide.

"michdenis" wrote:

Est-ce possible que tu publies à cette adresse Cijoint.fr ou cjoint.com
4 ou 5 lignes de ton fichier texte. Ça faciliterait la mise en place d'une
procédure fonctionnelle. (au moins les essais). Ne pas oublier de publier
ici l'adresse que tu obtiendras.



"JC Duce" a écrit dans le message de groupe de
discussion :
Bonjour et merci de t'etre penche sur mon cas.

En utilisant la syntaxe propose, j'obtiens une erreur "L'entree depasse la
fin du fichier".

Neanmoins, au vu de l'aide sur la fonction LOF que je ne connaissais pas, je
pense que je vais obtenir le meme resultat qu'avec Line Input.

Je vais essayer d'etre plus clair sur ma problematique.

Les chaines presentes dans le fichier contiennent des caracteres
hexadecimaux de code x'00'. Par exemple : "$ù_£%" ou _ est le fameux
caractere.

Vu dans Notepad, je vois bien la chaine "$ù_£%" de longueur 5, dans Word
egalement.
Par contre, avec Line Input sous Excel, j'obtiens "$ù£%" de longueur 4 ! Le
caractere _ a disparu et n'est pas remplace par un espace.

Comment garder cet espacement de maniere a ce que £ soit bien en 4ieme
position dans la chaine et pas en 3ieme ?

Merci encore en tout cas.

"michdenis" wrote:

> Bonjour,
>
> Comme je n'ai pas compris la question, je te suggère ceci
> sans crainte de me tromper... ;-)))
>
> '--------------------------------------
> Sub test()
> Dim I As long, Fich as String, Var as string
> Fich = "c:CheminMonFichier.txt"
> I = FreeFile
> Open Fich For Input As #I
> Var = Input(LOF(I), #I)
> Close #I
>
> 'maintenant remplace dans la variable Var le
> caractère que tu veux :
> Var = replace(Var,"x'00'"," ",xlpart)
>
> ' au besoin tu peux reporter le contenu dans la variable Var
> 'dans un fichier texte que tu importeras dans Excel.
>
> End Sub
> '--------------------------------------
>
>
>
> "JC Duce" a écrit dans le message de groupe de
> discussion :
> Bonjour,
>
> Je suis en train d'écrire une macro pour importer des fichiers TXT issus
> d'un gros système IBM vers Excel pour les formater automatiquement par
> colonnes.
>
> Je bute sur un caractère spécial qui est le "LOW-VALUE", codé en héxa par
> x'00'.
>
> En effet, en utlisant la syntaxe << Line Input #1, ligneValeur >> pour lire
> séquentiellement les lignes de mon fichier texte, tous les caractères x'00'
> sont supprimés de la variable ligneValeur avant même que je puisse intervenir
> pour les rechercher et les remplacer par des expaces par exemple.
>
> Pourtant, le Bloc-Note Windows sait bien les détecter puisqu'il m'affiche un
> espace à la place.
>
> Comment pourrais-je dire à Excel de lire la ligne sans AUCUNE modification,
> comme le fait Notepad ?
>
> Merci de votre aide.
>
Avatar
michdenis
Le texte du fichier reçu : E0240 â?EUR2 ‘}æPAIEMENT

Que veux-tu faire disparaître ? Si tu indiques un décompte à
partir de la gauche, peux-tu spécifier si tu calcules les espaces ?



"JC Duce" a écrit dans le message de groupe de
discussion :
Le voici : http://www.cijoint.fr/cjlink.php?file=cj201004/cijy1CHXny.txt

Ce n'est qu'un extrait, le caractere posant probleme etant le 8ieme ici.

Merci de ton aide.

"michdenis" wrote:

Est-ce possible que tu publies à cette adresse Cijoint.fr ou cjoint.com
4 ou 5 lignes de ton fichier texte. Ça faciliterait la mise en place d'une
procédure fonctionnelle. (au moins les essais). Ne pas oublier de publier
ici l'adresse que tu obtiendras.



"JC Duce" a écrit dans le message de groupe de
discussion :
Bonjour et merci de t'etre penche sur mon cas.

En utilisant la syntaxe propose, j'obtiens une erreur "L'entree depasse la
fin du fichier".

Neanmoins, au vu de l'aide sur la fonction LOF que je ne connaissais pas, je
pense que je vais obtenir le meme resultat qu'avec Line Input.

Je vais essayer d'etre plus clair sur ma problematique.

Les chaines presentes dans le fichier contiennent des caracteres
hexadecimaux de code x'00'. Par exemple : "$ù_£%" ou _ est le fameux
caractere.

Vu dans Notepad, je vois bien la chaine "$ù_£%" de longueur 5, dans Word
egalement.
Par contre, avec Line Input sous Excel, j'obtiens "$ù£%" de longueur 4 ! Le
caractere _ a disparu et n'est pas remplace par un espace.

Comment garder cet espacement de maniere a ce que £ soit bien en 4ieme
position dans la chaine et pas en 3ieme ?

Merci encore en tout cas.

"michdenis" wrote:

> Bonjour,
>
> Comme je n'ai pas compris la question, je te suggère ceci
> sans crainte de me tromper... ;-)))
>
> '--------------------------------------
> Sub test()
> Dim I As long, Fich as String, Var as string
> Fich = "c:CheminMonFichier.txt"
> I = FreeFile
> Open Fich For Input As #I
> Var = Input(LOF(I), #I)
> Close #I
>
> 'maintenant remplace dans la variable Var le
> caractère que tu veux :
> Var = replace(Var,"x'00'"," ",xlpart)
>
> ' au besoin tu peux reporter le contenu dans la variable Var
> 'dans un fichier texte que tu importeras dans Excel.
>
> End Sub
> '--------------------------------------
>
>
>
> "JC Duce" a écrit dans le message de groupe de
> discussion :
> Bonjour,
>
> Je suis en train d'écrire une macro pour importer des fichiers TXT issus
> d'un gros système IBM vers Excel pour les formater automatiquement par
> colonnes.
>
> Je bute sur un caractère spécial qui est le "LOW-VALUE", codé en héxa par
> x'00'.
>
> En effet, en utlisant la syntaxe << Line Input #1, ligneValeur >> pour lire
> séquentiellement les lignes de mon fichier texte, tous les caractères x'00'
> sont supprimés de la variable ligneValeur avant même que je puisse intervenir
> pour les rechercher et les remplacer par des expaces par exemple.
>
> Pourtant, le Bloc-Note Windows sait bien les détecter puisqu'il m'affiche un
> espace à la place.
>
> Comment pourrais-je dire à Excel de lire la ligne sans AUCUNE modification,
> comme le fait Notepad ?
>
> Merci de votre aide.
>
Avatar
Jex
On 28 avr, 13:36, "michdenis" wrote:
Le texte du fichier reçu :  E0240   â?EUR2     ‘}æPAIEMEN T

Que veux-tu faire disparaître ? Si tu indiques un décompte à
partir de la gauche, peux-tu spécifier si tu calcules les espaces ?

"JC Duce" a écrit dans le message de groupe de
discussion :
Le voici :http://www.cijoint.fr/cjlink.php?file=cj201004/cijy1CHXny.txt

Ce n'est qu'un extrait, le caractere posant probleme etant le 8ieme ici.

Merci de ton aide.

"michdenis" wrote:
> Est-ce possible que tu publies à cette adresse Cijoint.fr ou cjoint.c om
> 4 ou 5 lignes de ton fichier texte. Ça faciliterait la mise en place d'une
> procédure fonctionnelle. (au moins les essais). Ne pas oublier de pub lier
> ici l'adresse que tu obtiendras.

> "JC Duce" a écrit dans le message de groupe de
> discussion :
> Bonjour et merci de t'etre penche sur mon cas.

> En utilisant la syntaxe propose, j'obtiens une erreur "L'entree depasse la
> fin du fichier".

> Neanmoins, au vu de l'aide sur la fonction LOF que je ne connaissais pa s, je
> pense que je vais obtenir le meme resultat qu'avec Line Input.

> Je vais essayer d'etre plus clair sur ma problematique.

> Les chaines presentes dans le fichier contiennent des caracteres
> hexadecimaux de code x'00'. Par exemple : "$ù_£%" ou _ est le fameu x
> caractere.

> Vu dans Notepad, je vois bien la chaine "$ù_£%" de longueur 5, dans Word
> egalement.
> Par contre, avec Line Input sous Excel, j'obtiens "$ù£%"  de long ueur 4 ! Le
> caractere _ a disparu et n'est pas remplace par un espace.

> Comment garder cet espacement de maniere a ce que £ soit bien en 4iem e
> position dans la chaine et pas en 3ieme ?

> Merci encore en tout cas.

> "michdenis" wrote:

> > Bonjour,

> > Comme je n'ai pas compris la question, je te suggère ceci
> > sans crainte de me tromper... ;-)))

> > '--------------------------------------
> > Sub test()
> > Dim I  As long, Fich as String, Var as string
> > Fich = "c:CheminMonFichier.txt"
> > I = FreeFile
> > Open Fich For Input As #I
> > Var = Input(LOF(I), #I)
> > Close #I

> > 'maintenant remplace dans la variable Var le
> > caractère que tu veux :
> > Var = replace(Var,"x'00'"," ",xlpart)

> > ' au besoin tu peux reporter le contenu dans la variable Var
> > 'dans un fichier texte que tu importeras dans Excel.

> > End Sub
> > '--------------------------------------

> > "JC Duce" a écrit dans le messag e de groupe de
> > discussion :
> > Bonjour,

> > Je suis en train d'écrire une macro pour importer des fichiers TXT issus
> > d'un gros système IBM vers Excel pour les formater automatiquement par
> > colonnes.

> > Je bute sur un caractère spécial qui est le "LOW-VALUE", codé e n héxa par
> > x'00'.

> > En effet, en utlisant la syntaxe << Line Input #1, ligneValeur >> pou r lire
> > séquentiellement les lignes de mon fichier texte, tous les caract ères x'00'
> > sont supprimés de la variable ligneValeur avant même que je puiss e intervenir
> > pour les rechercher et les remplacer par des expaces par exemple.

> > Pourtant, le Bloc-Note Windows sait bien les détecter puisqu'il m'a ffiche un
> > espace à la place.

> > Comment pourrais-je dire à Excel de lire la ligne sans AUCUNE modif ication,
> > comme le fait Notepad ?

> > Merci de votre aide.


Bonjour,

Je ne rencontre pas de problème avec le fichier que tu as fournis.
J'utilise ceci (pris dans l'aide en ligne) :
Sub test()

Dim TextLine
Open "C:downloadtest.txt" For Input As #1 ' Ouvre le fichier.
Do While Not EOF(1) ' Effectue la boucle jusqu'à la fin du fichier.
Line Input #1, TextLine ' Lit la ligne dans la variable.
Debug.Print TextLine ' Affiche dans la fenêtre Exécution.
Loop
Close #1 ' Ferme le fichier.

End Sub

J'obtiens en debug : E0240 â?EUR2 ‘}æPAIEMENT
A l'affichage des caractères "non affichables" près, mais le 8ème
emplacement est bien présent.

Quel code utilises-tu ? Je n'ai jamais entendu parler d'une
disparition de caractères avec Line Input.