Je dois lire via Excel un fichier qui contient à la fois des données ASCII
(là, pas de pb, c'est du texte...) et des données binaires.
Je sais où elles sont (ce sont des champs délimités) et ce qu'elles
signifient (ce sont des entiers, codés sur un ou deux octets), mais je ne
sais pas quoi dire à Excel pour qu'il affiche, par exemple, 18 quand il
trouve l'octet \12, et 657 quand il trouve \02\91... Pour l'instant, je ne
vois que des hiéroglyphes...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
FxM
Bonjour,
Je dois lire via Excel un fichier qui contient à la fois des données ASCII (là, pas de pb, c'est du texte...) et des données binaires.
Je sais où elles sont (ce sont des champs délimités) et ce qu'elles signifient (ce sont des entiers, codés sur un ou deux octets), mais je ne sais pas quoi dire à Excel pour qu'il affiche, par exemple, 18 quand il trouve l'octet 12, et 657 quand il trouve 291... Pour l'instant, je ne vois que des hiéroglyphes...
Je dois lire via Excel un fichier qui contient à la fois des données ASCII
(là, pas de pb, c'est du texte...) et des données binaires.
Je sais où elles sont (ce sont des champs délimités) et ce qu'elles
signifient (ce sont des entiers, codés sur un ou deux octets), mais je ne
sais pas quoi dire à Excel pour qu'il affiche, par exemple, 18 quand il
trouve l'octet 12, et 657 quand il trouve 291... Pour l'instant, je ne
vois que des hiéroglyphes...
Je dois lire via Excel un fichier qui contient à la fois des données ASCII (là, pas de pb, c'est du texte...) et des données binaires.
Je sais où elles sont (ce sont des champs délimités) et ce qu'elles signifient (ce sont des entiers, codés sur un ou deux octets), mais je ne sais pas quoi dire à Excel pour qu'il affiche, par exemple, 18 quand il trouve l'octet 12, et 657 quand il trouve 291... Pour l'instant, je ne vois que des hiéroglyphes...
merci pour ton aide, mais je me suis mal exprimé...
Excel m'ouvre bien ce fichier et, lorsque les données sont en ASCII ('DUPONT', par exemple...), tout va bien. Par contre, sur chaque ligne, certains octets représentent des entiers et, bien sûr, Excel ne peut pas le deviner. Il affiche donc, en lieu et place de ces entiers, le caractère correspondant, un carré dans la plupart des cas.
Je cherche le moyen de dire à Excel : "cet octet n'est pas un caractère mais je veux le convertir en décimal". Idem pour des paquets de deux octets parfois. En gros, forcer Excel faire ce que tu as fait toit-même pour l'exemple donné...
Je pensais qu'un simple format de cellule pouvait convenir mais je ne trouve pas... En attendant, je m'en sors à peu près avec la fonction CODE()...
"FxM" a écrit dans le message de news:
Bonjour,
Je dois lire via Excel un fichier qui contient à la fois des données ASCII
(là, pas de pb, c'est du texte...) et des données binaires.
Je sais où elles sont (ce sont des champs délimités) et ce qu'elles signifient (ce sont des entiers, codés sur un ou deux octets), mais je ne
sais pas quoi dire à Excel pour qu'il affiche, par exemple, 18 quand il trouve l'octet 12, et 657 quand il trouve 291... Pour l'instant, je ne
merci pour ton aide, mais je me suis mal exprimé...
Excel m'ouvre bien ce fichier et, lorsque les données sont en ASCII
('DUPONT', par exemple...), tout va bien.
Par contre, sur chaque ligne, certains octets représentent des entiers et,
bien sûr, Excel ne peut pas le deviner. Il affiche donc, en lieu et place de
ces entiers, le caractère correspondant, un carré dans la plupart des cas.
Je cherche le moyen de dire à Excel : "cet octet n'est pas un caractère mais
je veux le convertir en décimal". Idem pour des paquets de deux octets
parfois. En gros, forcer Excel faire ce que tu as fait toit-même pour
l'exemple donné...
Je pensais qu'un simple format de cellule pouvait convenir mais je ne trouve
pas...
En attendant, je m'en sors à peu près avec la fonction CODE()...
"FxM" <nullos@greuchmeu.ici> a écrit dans le message de
news:espB09NnFHA.2920@TK2MSFTNGP14.phx.gbl...
Bonjour,
Je dois lire via Excel un fichier qui contient à la fois des données
ASCII
(là, pas de pb, c'est du texte...) et des données binaires.
Je sais où elles sont (ce sont des champs délimités) et ce qu'elles
signifient (ce sont des entiers, codés sur un ou deux octets), mais je
ne
sais pas quoi dire à Excel pour qu'il affiche, par exemple, 18 quand il
trouve l'octet 12, et 657 quand il trouve 291... Pour l'instant, je
ne
merci pour ton aide, mais je me suis mal exprimé...
Excel m'ouvre bien ce fichier et, lorsque les données sont en ASCII ('DUPONT', par exemple...), tout va bien. Par contre, sur chaque ligne, certains octets représentent des entiers et, bien sûr, Excel ne peut pas le deviner. Il affiche donc, en lieu et place de ces entiers, le caractère correspondant, un carré dans la plupart des cas.
Je cherche le moyen de dire à Excel : "cet octet n'est pas un caractère mais je veux le convertir en décimal". Idem pour des paquets de deux octets parfois. En gros, forcer Excel faire ce que tu as fait toit-même pour l'exemple donné...
Je pensais qu'un simple format de cellule pouvait convenir mais je ne trouve pas... En attendant, je m'en sors à peu près avec la fonction CODE()...
"FxM" a écrit dans le message de news:
Bonjour,
Je dois lire via Excel un fichier qui contient à la fois des données ASCII
(là, pas de pb, c'est du texte...) et des données binaires.
Je sais où elles sont (ce sont des champs délimités) et ce qu'elles signifient (ce sont des entiers, codés sur un ou deux octets), mais je ne
sais pas quoi dire à Excel pour qu'il affiche, par exemple, 18 quand il trouve l'octet 12, et 657 quand il trouve 291... Pour l'instant, je ne
Une idée comme çà ... Au lieu d'ouvrir le fichier, tu pourrais l'importer en VBA via open file for input (ou lineinput) puis découper chaque ligne pour traiter chaque partie selon ce qui va bien. Dans cette méthode aussi, les fonctions 'code' ou 'asc' ont de beaux jours devant elles.
Une fonction perso pourrait aussi assurer la conversion après ouverture classique. Si tu pouvais donner un extrait des données réelles, ce serait une bonne base de départ.
@+ FxM
merci pour ton aide, mais je me suis mal exprimé...
Excel m'ouvre bien ce fichier et, lorsque les données sont en ASCII ('DUPONT', par exemple...), tout va bien. Par contre, sur chaque ligne, certains octets représentent des entiers et, bien sûr, Excel ne peut pas le deviner. Il affiche donc, en lieu et place de ces entiers, le caractère correspondant, un carré dans la plupart des cas.
Je cherche le moyen de dire à Excel : "cet octet n'est pas un caractère mais je veux le convertir en décimal". Idem pour des paquets de deux octets parfois. En gros, forcer Excel faire ce que tu as fait toit-même pour l'exemple donné...
Je pensais qu'un simple format de cellule pouvait convenir mais je ne trouve pas... En attendant, je m'en sors à peu près avec la fonction CODE()...
"FxM" a écrit dans le message de news:
Bonjour,
Je dois lire via Excel un fichier qui contient à la fois des données
ASCII
(là, pas de pb, c'est du texte...) et des données binaires.
Je sais où elles sont (ce sont des champs délimités) et ce qu'elles signifient (ce sont des entiers, codés sur un ou deux octets), mais je
ne
sais pas quoi dire à Excel pour qu'il affiche, par exemple, 18 quand il trouve l'octet 12, et 657 quand il trouve 291... Pour l'instant, je
Une idée comme çà ... Au lieu d'ouvrir le fichier, tu pourrais
l'importer en VBA via open file for input (ou lineinput)
puis découper chaque ligne pour traiter chaque partie selon ce qui va
bien. Dans cette méthode aussi, les fonctions 'code' ou 'asc' ont de
beaux jours devant elles.
Une fonction perso pourrait aussi assurer la conversion après ouverture
classique. Si tu pouvais donner un extrait des données réelles, ce
serait une bonne base de départ.
@+
FxM
merci pour ton aide, mais je me suis mal exprimé...
Excel m'ouvre bien ce fichier et, lorsque les données sont en ASCII
('DUPONT', par exemple...), tout va bien.
Par contre, sur chaque ligne, certains octets représentent des entiers et,
bien sûr, Excel ne peut pas le deviner. Il affiche donc, en lieu et place de
ces entiers, le caractère correspondant, un carré dans la plupart des cas.
Je cherche le moyen de dire à Excel : "cet octet n'est pas un caractère mais
je veux le convertir en décimal". Idem pour des paquets de deux octets
parfois. En gros, forcer Excel faire ce que tu as fait toit-même pour
l'exemple donné...
Je pensais qu'un simple format de cellule pouvait convenir mais je ne trouve
pas...
En attendant, je m'en sors à peu près avec la fonction CODE()...
"FxM" <nullos@greuchmeu.ici> a écrit dans le message de
news:espB09NnFHA.2920@TK2MSFTNGP14.phx.gbl...
Bonjour,
Je dois lire via Excel un fichier qui contient à la fois des données
ASCII
(là, pas de pb, c'est du texte...) et des données binaires.
Je sais où elles sont (ce sont des champs délimités) et ce qu'elles
signifient (ce sont des entiers, codés sur un ou deux octets), mais je
ne
sais pas quoi dire à Excel pour qu'il affiche, par exemple, 18 quand il
trouve l'octet 12, et 657 quand il trouve 291... Pour l'instant, je
Une idée comme çà ... Au lieu d'ouvrir le fichier, tu pourrais l'importer en VBA via open file for input (ou lineinput) puis découper chaque ligne pour traiter chaque partie selon ce qui va bien. Dans cette méthode aussi, les fonctions 'code' ou 'asc' ont de beaux jours devant elles.
Une fonction perso pourrait aussi assurer la conversion après ouverture classique. Si tu pouvais donner un extrait des données réelles, ce serait une bonne base de départ.
@+ FxM
merci pour ton aide, mais je me suis mal exprimé...
Excel m'ouvre bien ce fichier et, lorsque les données sont en ASCII ('DUPONT', par exemple...), tout va bien. Par contre, sur chaque ligne, certains octets représentent des entiers et, bien sûr, Excel ne peut pas le deviner. Il affiche donc, en lieu et place de ces entiers, le caractère correspondant, un carré dans la plupart des cas.
Je cherche le moyen de dire à Excel : "cet octet n'est pas un caractère mais je veux le convertir en décimal". Idem pour des paquets de deux octets parfois. En gros, forcer Excel faire ce que tu as fait toit-même pour l'exemple donné...
Je pensais qu'un simple format de cellule pouvait convenir mais je ne trouve pas... En attendant, je m'en sors à peu près avec la fonction CODE()...
"FxM" a écrit dans le message de news:
Bonjour,
Je dois lire via Excel un fichier qui contient à la fois des données
ASCII
(là, pas de pb, c'est du texte...) et des données binaires.
Je sais où elles sont (ce sont des champs délimités) et ce qu'elles signifient (ce sont des entiers, codés sur un ou deux octets), mais je
ne
sais pas quoi dire à Excel pour qu'il affiche, par exemple, 18 quand il trouve l'octet 12, et 657 quand il trouve 291... Pour l'instant, je
Sub test() 'définition des variables Dim fil As String Dim numero As Integer Dim a As Integer, b As Integer, c As Integer Dim ligne As String Dim lx As Long
'nom du fichier fil = "D:intest.txt"
'ouvrir le fichier pour lecture numero = FreeFile Open fil For Input As numero
'tant que la fin du fichier n'est pas atteinte Do While Not EOF(numero) 'charger la ligne entière Line Input #numero, ligne 'a, b et c sont les codes ascii des 3 premiers caractères a = Asc(Mid(ligne, 1, 1)) b = Asc(Mid(ligne, 2, 1)) c = Asc(Mid(ligne, 3, 1)) 'ligne est le restant de la ligne ligne = Right(ligne, Len(ligne) - 3) 'trouver la dernière ligne remplie de la feuille active 'en cas d'erreur -feuille vide-, dire que lx=1 On Error Resume Next lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row + 1 If Err > 0 Then lx = 1 Err.Clear On Error Resume Next 'compléter les cellules With ActiveSheet .Cells(lx, "A") = a .Cells(lx, "B") = b .Cells(lx, "C") = c 'calculer la somme ? If a = 32 Then a = 0 .Cells(lx, "D") = (a * (16 ^ 2)) + (b * (16 ^ 1)) + (c * (16 ^ 0)) .Cells(lx, "E") = ligne End With Loop Close numero End Sub
Voici un extrait d'un fichier simple (ce sont des noms + adresses, etc...) Les 3 premiers caractères sont, je suppose, une clé numérique. Je pourrais, à la limite, me débrouiller en utilisant CODE()... à condition qu'excel ne me mange pas les espaces de début de ligne car, alors, je suis perdu...
Dans les quelques lignes d'exemple, tu verras que, selon la taille de la "clé numérique", elle occupe 1 ou 2 octets sur les 3 premiers. Donc Excel mange 2 ou 1 espace et il m'est impossible de faire un traitement générique sur le fichier : snif !
Merci pour ton aide.
"FxM" a écrit dans le message de news:
Une idée comme çà ... Au lieu d'ouvrir le fichier, tu pourrais l'importer en VBA via open file for input (ou lineinput) puis découper chaque ligne pour traiter chaque partie selon ce qui va bien. Dans cette méthode aussi, les fonctions 'code' ou 'asc' ont de beaux jours devant elles.
Une fonction perso pourrait aussi assurer la conversion après ouverture classique. Si tu pouvais donner un extrait des données réelles, ce serait une bonne base de départ.
@+ FxM
A tester et (probablement) à adapter :
@+
FxM
Sub test()
'définition des variables
Dim fil As String
Dim numero As Integer
Dim a As Integer, b As Integer, c As Integer
Dim ligne As String
Dim lx As Long
'nom du fichier
fil = "D:intest.txt"
'ouvrir le fichier pour lecture
numero = FreeFile
Open fil For Input As numero
'tant que la fin du fichier n'est pas atteinte
Do While Not EOF(numero)
'charger la ligne entière
Line Input #numero, ligne
'a, b et c sont les codes ascii des 3 premiers caractères
a = Asc(Mid(ligne, 1, 1))
b = Asc(Mid(ligne, 2, 1))
c = Asc(Mid(ligne, 3, 1))
'ligne est le restant de la ligne
ligne = Right(ligne, Len(ligne) - 3)
'trouver la dernière ligne remplie de la feuille active
'en cas d'erreur -feuille vide-, dire que lx=1
On Error Resume Next
lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row + 1
If Err > 0 Then lx = 1
Err.Clear
On Error Resume Next
'compléter les cellules
With ActiveSheet
.Cells(lx, "A") = a
.Cells(lx, "B") = b
.Cells(lx, "C") = c
'calculer la somme ?
If a = 32 Then a = 0
.Cells(lx, "D") = (a * (16 ^ 2)) + (b * (16 ^ 1)) + (c * (16 ^ 0))
.Cells(lx, "E") = ligne
End With
Loop
Close numero
End Sub
Voici un extrait d'un fichier simple (ce sont des noms + adresses, etc...)
Les 3 premiers caractères sont, je suppose, une clé numérique.
Je pourrais, à la limite, me débrouiller en utilisant CODE()... à condition
qu'excel ne me mange pas les espaces de début de ligne car, alors, je suis
perdu...
Dans les quelques lignes d'exemple, tu verras que, selon la taille de la
"clé numérique", elle occupe 1 ou 2 octets sur les 3 premiers. Donc Excel
mange 2 ou 1 espace et il m'est impossible de faire un traitement générique
sur le fichier : snif !
Merci pour ton aide.
"FxM" <nullos@greuchmeu.ici> a écrit dans le message de
news:eu7QzvOnFHA.1416@TK2MSFTNGP09.phx.gbl...
Une idée comme çà ... Au lieu d'ouvrir le fichier, tu pourrais
l'importer en VBA via open file for input (ou lineinput)
puis découper chaque ligne pour traiter chaque partie selon ce qui va
bien. Dans cette méthode aussi, les fonctions 'code' ou 'asc' ont de
beaux jours devant elles.
Une fonction perso pourrait aussi assurer la conversion après ouverture
classique. Si tu pouvais donner un extrait des données réelles, ce
serait une bonne base de départ.
Sub test() 'définition des variables Dim fil As String Dim numero As Integer Dim a As Integer, b As Integer, c As Integer Dim ligne As String Dim lx As Long
'nom du fichier fil = "D:intest.txt"
'ouvrir le fichier pour lecture numero = FreeFile Open fil For Input As numero
'tant que la fin du fichier n'est pas atteinte Do While Not EOF(numero) 'charger la ligne entière Line Input #numero, ligne 'a, b et c sont les codes ascii des 3 premiers caractères a = Asc(Mid(ligne, 1, 1)) b = Asc(Mid(ligne, 2, 1)) c = Asc(Mid(ligne, 3, 1)) 'ligne est le restant de la ligne ligne = Right(ligne, Len(ligne) - 3) 'trouver la dernière ligne remplie de la feuille active 'en cas d'erreur -feuille vide-, dire que lx=1 On Error Resume Next lx = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row + 1 If Err > 0 Then lx = 1 Err.Clear On Error Resume Next 'compléter les cellules With ActiveSheet .Cells(lx, "A") = a .Cells(lx, "B") = b .Cells(lx, "C") = c 'calculer la somme ? If a = 32 Then a = 0 .Cells(lx, "D") = (a * (16 ^ 2)) + (b * (16 ^ 1)) + (c * (16 ^ 0)) .Cells(lx, "E") = ligne End With Loop Close numero End Sub
Voici un extrait d'un fichier simple (ce sont des noms + adresses, etc...) Les 3 premiers caractères sont, je suppose, une clé numérique. Je pourrais, à la limite, me débrouiller en utilisant CODE()... à condition qu'excel ne me mange pas les espaces de début de ligne car, alors, je suis perdu...
Dans les quelques lignes d'exemple, tu verras que, selon la taille de la "clé numérique", elle occupe 1 ou 2 octets sur les 3 premiers. Donc Excel mange 2 ou 1 espace et il m'est impossible de faire un traitement générique sur le fichier : snif !
Merci pour ton aide.
"FxM" a écrit dans le message de news:
Une idée comme çà ... Au lieu d'ouvrir le fichier, tu pourrais l'importer en VBA via open file for input (ou lineinput) puis découper chaque ligne pour traiter chaque partie selon ce qui va bien. Dans cette méthode aussi, les fonctions 'code' ou 'asc' ont de beaux jours devant elles.
Une fonction perso pourrait aussi assurer la conversion après ouverture classique. Si tu pouvais donner un extrait des données réelles, ce serait une bonne base de départ.
@+ FxM
ClémentMarcotte
Bonjour,
C'est trop loin pour moi pour l'instant et je n'ai pas envie de m'embarquer là-dedans. Cela va te prendre quelque chose du genre. (Pas testé)
sub accesbinaire() do open "lenomdufichier" for binary as 1 'se déplacer se x octets pour atteindre la position 'de la première donnée seek #1, x get #1, laplace 'Si laplace est en Integer et que la deuxième donnée 'est collée sur la première, se déplacer de 4 octets. seek #1, lapierre lanouvelleplace = seek #1 loop close end sub
Mais là, cela va prendre une condition d'arrêt dans le do ou dans le loop.
"Christophe Cerbourg" a écrit dans le message de news:
Bonjour,
Je dois lire via Excel un fichier qui contient à la fois des données ASCII (là, pas de pb, c'est du texte...) et des données binaires.
Je sais où elles sont (ce sont des champs délimités) et ce qu'elles signifient (ce sont des entiers, codés sur un ou deux octets), mais je ne sais pas quoi dire à Excel pour qu'il affiche, par exemple, 18 quand il trouve l'octet 12, et 657 quand il trouve 291... Pour l'instant, je ne vois que des hiéroglyphes...
Merci pour votre aide !
Bonjour,
C'est trop loin pour moi pour l'instant et je n'ai pas envie de m'embarquer
là-dedans. Cela va te prendre quelque chose du genre. (Pas testé)
sub accesbinaire()
do
open "lenomdufichier" for binary as 1
'se déplacer se x octets pour atteindre la position
'de la première donnée
seek #1, x
get #1, laplace
'Si laplace est en Integer et que la deuxième donnée
'est collée sur la première, se déplacer de 4 octets.
seek #1, lapierre
lanouvelleplace = seek #1
loop
close
end sub
Mais là, cela va prendre une condition d'arrêt dans le do ou dans le loop.
"Christophe Cerbourg" <someone@some.where> a écrit dans le message de
news:eyyMxtNnFHA.3316@tk2msftngp13.phx.gbl...
Bonjour,
Je dois lire via Excel un fichier qui contient à la fois des données ASCII
(là, pas de pb, c'est du texte...) et des données binaires.
Je sais où elles sont (ce sont des champs délimités) et ce qu'elles
signifient (ce sont des entiers, codés sur un ou deux octets), mais je ne
sais pas quoi dire à Excel pour qu'il affiche, par exemple, 18 quand il
trouve l'octet 12, et 657 quand il trouve 291... Pour l'instant, je ne
vois que des hiéroglyphes...
C'est trop loin pour moi pour l'instant et je n'ai pas envie de m'embarquer là-dedans. Cela va te prendre quelque chose du genre. (Pas testé)
sub accesbinaire() do open "lenomdufichier" for binary as 1 'se déplacer se x octets pour atteindre la position 'de la première donnée seek #1, x get #1, laplace 'Si laplace est en Integer et que la deuxième donnée 'est collée sur la première, se déplacer de 4 octets. seek #1, lapierre lanouvelleplace = seek #1 loop close end sub
Mais là, cela va prendre une condition d'arrêt dans le do ou dans le loop.
"Christophe Cerbourg" a écrit dans le message de news:
Bonjour,
Je dois lire via Excel un fichier qui contient à la fois des données ASCII (là, pas de pb, c'est du texte...) et des données binaires.
Je sais où elles sont (ce sont des champs délimités) et ce qu'elles signifient (ce sont des entiers, codés sur un ou deux octets), mais je ne sais pas quoi dire à Excel pour qu'il affiche, par exemple, 18 quand il trouve l'octet 12, et 657 quand il trouve 291... Pour l'instant, je ne vois que des hiéroglyphes...
Merci pour votre aide !
ClémentMarcotte
Oupss!!!!
Semblerait que c'est pas Get (c'est pour les fichiers aléatoires seulement) mais input()
Des exemples dans l'aide de VBA pour seek et input
"ClémentMarcotte" a écrit dans le message de news:ONj%
Bonjour,
C'est trop loin pour moi pour l'instant et je n'ai pas envie de m'embarquer
là-dedans. Cela va te prendre quelque chose du genre. (Pas testé)
sub accesbinaire() do open "lenomdufichier" for binary as 1 'se déplacer se x octets pour atteindre la position 'de la première donnée seek #1, x get #1, laplace 'Si laplace est en Integer et que la deuxième donnée 'est collée sur la première, se déplacer de 4 octets. seek #1, lapierre lanouvelleplace = seek #1 loop close end sub
Mais là, cela va prendre une condition d'arrêt dans le do ou dans le loop.
"Christophe Cerbourg" a écrit dans le message de news:
Bonjour,
Je dois lire via Excel un fichier qui contient à la fois des données ASCII
(là, pas de pb, c'est du texte...) et des données binaires.
Je sais où elles sont (ce sont des champs délimités) et ce qu'elles signifient (ce sont des entiers, codés sur un ou deux octets), mais je ne
sais pas quoi dire à Excel pour qu'il affiche, par exemple, 18 quand il trouve l'octet 12, et 657 quand il trouve 291... Pour l'instant, je ne
vois que des hiéroglyphes...
Merci pour votre aide !
Oupss!!!!
Semblerait que c'est pas Get (c'est pour les fichiers aléatoires seulement)
mais input()
Des exemples dans l'aide de VBA pour seek et input
"ClémentMarcotte" <clement.marcotte@sympatico.ca> a écrit dans le message de
news:ONj%238FQnFHA.3288@TK2MSFTNGP10.phx.gbl...
Bonjour,
C'est trop loin pour moi pour l'instant et je n'ai pas envie de
m'embarquer
là-dedans. Cela va te prendre quelque chose du genre. (Pas testé)
sub accesbinaire()
do
open "lenomdufichier" for binary as 1
'se déplacer se x octets pour atteindre la position
'de la première donnée
seek #1, x
get #1, laplace
'Si laplace est en Integer et que la deuxième donnée
'est collée sur la première, se déplacer de 4 octets.
seek #1, lapierre
lanouvelleplace = seek #1
loop
close
end sub
Mais là, cela va prendre une condition d'arrêt dans le do ou dans le loop.
"Christophe Cerbourg" <someone@some.where> a écrit dans le message de
news:eyyMxtNnFHA.3316@tk2msftngp13.phx.gbl...
Bonjour,
Je dois lire via Excel un fichier qui contient à la fois des données
ASCII
(là, pas de pb, c'est du texte...) et des données binaires.
Je sais où elles sont (ce sont des champs délimités) et ce qu'elles
signifient (ce sont des entiers, codés sur un ou deux octets), mais je
ne
sais pas quoi dire à Excel pour qu'il affiche, par exemple, 18 quand il
trouve l'octet 12, et 657 quand il trouve 291... Pour l'instant, je
ne
Semblerait que c'est pas Get (c'est pour les fichiers aléatoires seulement) mais input()
Des exemples dans l'aide de VBA pour seek et input
"ClémentMarcotte" a écrit dans le message de news:ONj%
Bonjour,
C'est trop loin pour moi pour l'instant et je n'ai pas envie de m'embarquer
là-dedans. Cela va te prendre quelque chose du genre. (Pas testé)
sub accesbinaire() do open "lenomdufichier" for binary as 1 'se déplacer se x octets pour atteindre la position 'de la première donnée seek #1, x get #1, laplace 'Si laplace est en Integer et que la deuxième donnée 'est collée sur la première, se déplacer de 4 octets. seek #1, lapierre lanouvelleplace = seek #1 loop close end sub
Mais là, cela va prendre une condition d'arrêt dans le do ou dans le loop.
"Christophe Cerbourg" a écrit dans le message de news:
Bonjour,
Je dois lire via Excel un fichier qui contient à la fois des données ASCII
(là, pas de pb, c'est du texte...) et des données binaires.
Je sais où elles sont (ce sont des champs délimités) et ce qu'elles signifient (ce sont des entiers, codés sur un ou deux octets), mais je ne
sais pas quoi dire à Excel pour qu'il affiche, par exemple, 18 quand il trouve l'octet 12, et 657 quand il trouve 291... Pour l'instant, je ne