Le code suivant s'exécute sur le même fichier en VBA et en VB mais ne donne
pas le même résultat !!!
Open CHEMIN & "LIMES.LST" For Binary As #1
NbLLimes = LOF(1) / Len(LLimes)
ReDim TabLLimes(1 To NbLLimes)
Get 1, , TabLLimes
Close
Je précise que NbLLimes est un long et que LLimes est un type défini et
TabLLimes est un tableau dynamique
Le type défini est
Public Type tListeLimes
NuméroLimes As Long 'Le numéro du limes dans le tableau des
limes
SensPositif As Boolean 'si SensPositif est Vrai, le Limes est
dessiné du premier au
'dernier point, dans l'autre sens
sinon.
End Type
En VB on trouve
0,V
0,V
0,V
4,V
5,V
(ce sont les bonnes valeurs)
En VBA
0,V
-65536,F
327679,F
5,V
Si on traduit tout cela en octet
En VB 0,0,0,0,ff,ff,0,0,0,0,ff,ff,0,0,0,0,ff,ff,0,0,0,4,ff,ff,0,0,0,5,ff,ff
En VBA 0,0,0,0,ff,ff,ff,ff,0,0,0,0,0,4,ff,ff,0,0,0,0,0,5,ff,ff
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
Patrice Henrio
"Patrice Henrio" a écrit dans le message de news:
Le code suivant s'exécute sur le même fichier en VBA et en VB mais ne donne pas le même résultat !!!
Open CHEMIN & "LIMES.LST" For Binary As #1 NbLLimes = LOF(1) / Len(LLimes) ReDim TabLLimes(1 To NbLLimes) Get 1, , TabLLimes Close
Je précise que NbLLimes est un long et que LLimes est un type défini et TabLLimes est un tableau dynamique Le type défini est
Public Type tListeLimes NuméroLimes As Long 'Le numéro du limes dans le tableau des limes SensPositif As Boolean 'si SensPositif est Vrai, le Limes est dessiné du premier au 'dernier point, dans l'autre sens sinon. End Type
En VB on trouve 0,V 0,V 0,V 4,V 5,V
(ce sont les bonnes valeurs)
En VBA 0,V -65536,F 327679,F 5,V
Si on traduit tout cela en octet
En VB 0,0,0,0,ff,ff,0,0,0,0,ff,ff,0,0,0,0,ff,ff,0,0,0,4,ff,ff,0,0,0,5,ff,ff
En VBA 0,0,0,0,ff,ff,ff,ff,0,0,0,0,0,4,ff,ff,0,0,0,0,0,5,ff,ff
Qui a une idée ?
Pour ajouter à la perplexité je précise que la variable NbLLimes a la même valeur dans les deux cas, et qu'une manip de ce genre avec un type de données de 9 octets passe sans problème.
"Patrice Henrio" <patrice.henrio@laposte.net> a écrit dans le message de
news: O8Nrj0VvFHA.3864@TK2MSFTNGP12.phx.gbl...
Le code suivant s'exécute sur le même fichier en VBA et en VB mais ne
donne pas le même résultat !!!
Open CHEMIN & "LIMES.LST" For Binary As #1
NbLLimes = LOF(1) / Len(LLimes)
ReDim TabLLimes(1 To NbLLimes)
Get 1, , TabLLimes
Close
Je précise que NbLLimes est un long et que LLimes est un type défini et
TabLLimes est un tableau dynamique
Le type défini est
Public Type tListeLimes
NuméroLimes As Long 'Le numéro du limes dans le tableau
des limes
SensPositif As Boolean 'si SensPositif est Vrai, le Limes est
dessiné du premier au
'dernier point, dans l'autre sens
sinon.
End Type
En VB on trouve
0,V
0,V
0,V
4,V
5,V
(ce sont les bonnes valeurs)
En VBA
0,V
-65536,F
327679,F
5,V
Si on traduit tout cela en octet
En VB
0,0,0,0,ff,ff,0,0,0,0,ff,ff,0,0,0,0,ff,ff,0,0,0,4,ff,ff,0,0,0,5,ff,ff
En VBA 0,0,0,0,ff,ff,ff,ff,0,0,0,0,0,4,ff,ff,0,0,0,0,0,5,ff,ff
Qui a une idée ?
Pour ajouter à la perplexité je précise que la variable NbLLimes a la même
valeur dans les deux cas, et qu'une manip de ce genre avec un type de
données de 9 octets passe sans problème.
Le code suivant s'exécute sur le même fichier en VBA et en VB mais ne donne pas le même résultat !!!
Open CHEMIN & "LIMES.LST" For Binary As #1 NbLLimes = LOF(1) / Len(LLimes) ReDim TabLLimes(1 To NbLLimes) Get 1, , TabLLimes Close
Je précise que NbLLimes est un long et que LLimes est un type défini et TabLLimes est un tableau dynamique Le type défini est
Public Type tListeLimes NuméroLimes As Long 'Le numéro du limes dans le tableau des limes SensPositif As Boolean 'si SensPositif est Vrai, le Limes est dessiné du premier au 'dernier point, dans l'autre sens sinon. End Type
En VB on trouve 0,V 0,V 0,V 4,V 5,V
(ce sont les bonnes valeurs)
En VBA 0,V -65536,F 327679,F 5,V
Si on traduit tout cela en octet
En VB 0,0,0,0,ff,ff,0,0,0,0,ff,ff,0,0,0,0,ff,ff,0,0,0,4,ff,ff,0,0,0,5,ff,ff
En VBA 0,0,0,0,ff,ff,ff,ff,0,0,0,0,0,4,ff,ff,0,0,0,0,0,5,ff,ff
Qui a une idée ?
Pour ajouter à la perplexité je précise que la variable NbLLimes a la même valeur dans les deux cas, et qu'une manip de ce genre avec un type de données de 9 octets passe sans problème.
Fred
http://www.cerbermail.com/?3kA6ftaCvT "Patrice Henrio" a écrit dans le message de news:%
"Patrice Henrio" a écrit dans le message
de
news: > Le code suivant s'exécute sur le même fichier en VBA et en VB mais
ne
> donne pas le même résultat !!!
Bonjour Patrice,
Sur le même fichier (à priori) de 30 octets, cela passe chez moi en VBA. En version Office 2003. Je n'ai pas le vb6 installé ici pour tester. Vérifie la taille de ton fichier. Je ne vois que cela qui peut différer entre ton test et le mien. (Ou alors la déclaration de LLimes qui ne figure pas dans ton code)
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
http://www.cerbermail.com/?3kA6ftaCvT
"Patrice Henrio" <patrice.henrio@laposte.net> a écrit dans le message de
news:%23tuRKAWvFHA.4032@TK2MSFTNGP15.phx.gbl...
"Patrice Henrio" <patrice.henrio@laposte.net> a écrit dans le message
de
news: O8Nrj0VvFHA.3864@TK2MSFTNGP12.phx.gbl...
> Le code suivant s'exécute sur le même fichier en VBA et en VB mais
ne
> donne pas le même résultat !!!
Bonjour Patrice,
Sur le même fichier (à priori) de 30 octets, cela passe chez moi en VBA.
En version Office 2003.
Je n'ai pas le vb6 installé ici pour tester.
Vérifie la taille de ton fichier. Je ne vois que cela qui peut différer
entre ton test et le mien.
(Ou alors la déclaration de LLimes qui ne figure pas dans ton code)
http://www.cerbermail.com/?3kA6ftaCvT "Patrice Henrio" a écrit dans le message de news:%
"Patrice Henrio" a écrit dans le message
de
news: > Le code suivant s'exécute sur le même fichier en VBA et en VB mais
ne
> donne pas le même résultat !!!
Bonjour Patrice,
Sur le même fichier (à priori) de 30 octets, cela passe chez moi en VBA. En version Office 2003. Je n'ai pas le vb6 installé ici pour tester. Vérifie la taille de ton fichier. Je ne vois que cela qui peut différer entre ton test et le mien. (Ou alors la déclaration de LLimes qui ne figure pas dans ton code)
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Patrice Henrio
La taille du fichier est de 10 KO (je n'ai donné que le début). La déclaration est faite et de toutes façons redim a la fonction d'un dim (c'est aussi une déclaration de variable) Et pire sans rien changer cela marche ce matin comme il y deux jours. Peut-être l'oubli d'un erase qui perturbe sa gestion du tas ? Je n'ai rien trouvé de cohérent même si la structure lue semble suivre une logique précise. En tout cas cela reste bien mystérieux.
"Fred" a écrit dans le message de news:
http://www.cerbermail.com/?3kA6ftaCvT "Patrice Henrio" a écrit dans le message de news:%
"Patrice Henrio" a écrit dans le message
de
news: > Le code suivant s'exécute sur le même fichier en VBA et en VB mais
ne
> donne pas le même résultat !!!
Bonjour Patrice,
Sur le même fichier (à priori) de 30 octets, cela passe chez moi en VBA. En version Office 2003. Je n'ai pas le vb6 installé ici pour tester. Vérifie la taille de ton fichier. Je ne vois que cela qui peut différer entre ton test et le mien. (Ou alors la déclaration de LLimes qui ne figure pas dans ton code)
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
La taille du fichier est de 10 KO (je n'ai donné que le début). La
déclaration est faite et de toutes façons redim a la fonction d'un dim
(c'est aussi une déclaration de variable)
Et pire sans rien changer cela marche ce matin comme il y deux jours.
Peut-être l'oubli d'un erase qui perturbe sa gestion du tas ?
Je n'ai rien trouvé de cohérent même si la structure lue semble suivre une
logique précise.
En tout cas cela reste bien mystérieux.
"Fred" <foleide@libre.france> a écrit dans le message de news:
u4DBI5ZvFHA.1560@TK2MSFTNGP09.phx.gbl...
http://www.cerbermail.com/?3kA6ftaCvT
"Patrice Henrio" <patrice.henrio@laposte.net> a écrit dans le message de
news:%23tuRKAWvFHA.4032@TK2MSFTNGP15.phx.gbl...
"Patrice Henrio" <patrice.henrio@laposte.net> a écrit dans le message
de
news: O8Nrj0VvFHA.3864@TK2MSFTNGP12.phx.gbl...
> Le code suivant s'exécute sur le même fichier en VBA et en VB mais
ne
> donne pas le même résultat !!!
Bonjour Patrice,
Sur le même fichier (à priori) de 30 octets, cela passe chez moi en VBA.
En version Office 2003.
Je n'ai pas le vb6 installé ici pour tester.
Vérifie la taille de ton fichier. Je ne vois que cela qui peut différer
entre ton test et le mien.
(Ou alors la déclaration de LLimes qui ne figure pas dans ton code)
La taille du fichier est de 10 KO (je n'ai donné que le début). La déclaration est faite et de toutes façons redim a la fonction d'un dim (c'est aussi une déclaration de variable) Et pire sans rien changer cela marche ce matin comme il y deux jours. Peut-être l'oubli d'un erase qui perturbe sa gestion du tas ? Je n'ai rien trouvé de cohérent même si la structure lue semble suivre une logique précise. En tout cas cela reste bien mystérieux.
"Fred" a écrit dans le message de news:
http://www.cerbermail.com/?3kA6ftaCvT "Patrice Henrio" a écrit dans le message de news:%
"Patrice Henrio" a écrit dans le message
de
news: > Le code suivant s'exécute sur le même fichier en VBA et en VB mais
ne
> donne pas le même résultat !!!
Bonjour Patrice,
Sur le même fichier (à priori) de 30 octets, cela passe chez moi en VBA. En version Office 2003. Je n'ai pas le vb6 installé ici pour tester. Vérifie la taille de ton fichier. Je ne vois que cela qui peut différer entre ton test et le mien. (Ou alors la déclaration de LLimes qui ne figure pas dans ton code)
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Fred
Dans le message:, Patrice Henrio écrit:
La taille du fichier est de 10 KO (je n'ai donné que le début).
Oui, je voulais surtout signaler qu'il peut être bon de vérifier la taille en octets du fichier pour voir si elle correspond bien au nombre d'enregistrements stockés (x6 la taille attendue d'un enregistrement) :-)
La déclaration est faite et de toutes façons redim a la fonction d'un dim (c'est aussi une déclaration de variable)
C'est LLimes et non TabLLimes qui manquait dans ton bout de code. Et comme cela intervient dans le calcul du ReDim ... D'où ma supposition.
Et pire sans rien changer cela marche ce matin comme il y deux jours. Peut-être l'oubli d'un erase qui perturbe sa gestion du tas ? Je n'ai rien trouvé de cohérent même si la structure lue semble suivre une logique précise.
On dirait que le fichier a été réécrit entre tes deux essais (vb et vba). Tu n'as pas une procédure d'enregistrement systématique en fin de programme qui utilise des Put avec une adresse en octets erronée ?
En tout cas cela reste bien mystérieux.
Si cela fonctionne maintenant, c'est le principal. Mais c'est frustrant de ne pas trouver une explication rationnelle :-D
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Dans le message:OgAnjpavFHA.3500@TK2MSFTNGP09.phx.gbl,
Patrice Henrio écrit:
La taille du fichier est de 10 KO (je n'ai donné que le début).
Oui, je voulais surtout signaler qu'il peut être bon de vérifier la
taille en octets du fichier pour voir si elle correspond bien au nombre
d'enregistrements stockés (x6 la taille attendue d'un enregistrement)
:-)
La déclaration est faite et de toutes façons redim a la fonction d'un
dim
(c'est aussi une déclaration de variable)
C'est LLimes et non TabLLimes qui manquait dans ton bout de code. Et
comme cela intervient dans le calcul du ReDim ... D'où ma supposition.
Et pire sans rien changer cela marche ce matin comme il y deux jours.
Peut-être l'oubli d'un erase qui perturbe sa gestion du tas ?
Je n'ai rien trouvé de cohérent même si la structure lue semble
suivre une logique précise.
On dirait que le fichier a été réécrit entre tes deux essais (vb et
vba). Tu n'as pas une procédure d'enregistrement systématique en fin de
programme qui utilise des Put avec une adresse en octets erronée ?
En tout cas cela reste bien mystérieux.
Si cela fonctionne maintenant, c'est le principal. Mais c'est frustrant
de ne pas trouver une explication rationnelle :-D
La taille du fichier est de 10 KO (je n'ai donné que le début).
Oui, je voulais surtout signaler qu'il peut être bon de vérifier la taille en octets du fichier pour voir si elle correspond bien au nombre d'enregistrements stockés (x6 la taille attendue d'un enregistrement) :-)
La déclaration est faite et de toutes façons redim a la fonction d'un dim (c'est aussi une déclaration de variable)
C'est LLimes et non TabLLimes qui manquait dans ton bout de code. Et comme cela intervient dans le calcul du ReDim ... D'où ma supposition.
Et pire sans rien changer cela marche ce matin comme il y deux jours. Peut-être l'oubli d'un erase qui perturbe sa gestion du tas ? Je n'ai rien trouvé de cohérent même si la structure lue semble suivre une logique précise.
On dirait que le fichier a été réécrit entre tes deux essais (vb et vba). Tu n'as pas une procédure d'enregistrement systématique en fin de programme qui utilise des Put avec une adresse en octets erronée ?
En tout cas cela reste bien mystérieux.
Si cela fonctionne maintenant, c'est le principal. Mais c'est frustrant de ne pas trouver une explication rationnelle :-D
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Patrice Henrio
Le problème est réapparu sur le portable. Il semble que le rpoblème intervient quand la mémoir eest largement utilisée. Je n'en sais pas plus. J'ai trouvé une solution : lire chaque enregistrement un par un (dommage)
Pour VB et VBA il s'agit bien du même fcihizer lu (je l'ai vérifié).
Tant pis.
"Fred" a écrit dans le message de news: %
Dans le message:, Patrice Henrio écrit:
La taille du fichier est de 10 KO (je n'ai donné que le début).
Oui, je voulais surtout signaler qu'il peut être bon de vérifier la taille en octets du fichier pour voir si elle correspond bien au nombre d'enregistrements stockés (x6 la taille attendue d'un enregistrement) :-)
La déclaration est faite et de toutes façons redim a la fonction d'un dim (c'est aussi une déclaration de variable)
C'est LLimes et non TabLLimes qui manquait dans ton bout de code. Et comme cela intervient dans le calcul du ReDim ... D'où ma supposition.
Et pire sans rien changer cela marche ce matin comme il y deux jours. Peut-être l'oubli d'un erase qui perturbe sa gestion du tas ? Je n'ai rien trouvé de cohérent même si la structure lue semble suivre une logique précise.
On dirait que le fichier a été réécrit entre tes deux essais (vb et vba). Tu n'as pas une procédure d'enregistrement systématique en fin de programme qui utilise des Put avec une adresse en octets erronée ?
En tout cas cela reste bien mystérieux.
Si cela fonctionne maintenant, c'est le principal. Mais c'est frustrant de ne pas trouver une explication rationnelle :-D
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Le problème est réapparu sur le portable. Il semble que le rpoblème
intervient quand la mémoir eest largement utilisée.
Je n'en sais pas plus.
J'ai trouvé une solution : lire chaque enregistrement un par un (dommage)
Pour VB et VBA il s'agit bien du même fcihizer lu (je l'ai vérifié).
Tant pis.
"Fred" <foleide@libre.france> a écrit dans le message de news:
%23hemWRbvFHA.460@TK2MSFTNGP15.phx.gbl...
Dans le message:OgAnjpavFHA.3500@TK2MSFTNGP09.phx.gbl,
Patrice Henrio écrit:
La taille du fichier est de 10 KO (je n'ai donné que le début).
Oui, je voulais surtout signaler qu'il peut être bon de vérifier la taille
en octets du fichier pour voir si elle correspond bien au nombre
d'enregistrements stockés (x6 la taille attendue d'un enregistrement) :-)
La déclaration est faite et de toutes façons redim a la fonction d'un dim
(c'est aussi une déclaration de variable)
C'est LLimes et non TabLLimes qui manquait dans ton bout de code. Et comme
cela intervient dans le calcul du ReDim ... D'où ma supposition.
Et pire sans rien changer cela marche ce matin comme il y deux jours.
Peut-être l'oubli d'un erase qui perturbe sa gestion du tas ?
Je n'ai rien trouvé de cohérent même si la structure lue semble
suivre une logique précise.
On dirait que le fichier a été réécrit entre tes deux essais (vb et vba).
Tu n'as pas une procédure d'enregistrement systématique en fin de
programme qui utilise des Put avec une adresse en octets erronée ?
En tout cas cela reste bien mystérieux.
Si cela fonctionne maintenant, c'est le principal. Mais c'est frustrant de
ne pas trouver une explication rationnelle :-D
Le problème est réapparu sur le portable. Il semble que le rpoblème intervient quand la mémoir eest largement utilisée. Je n'en sais pas plus. J'ai trouvé une solution : lire chaque enregistrement un par un (dommage)
Pour VB et VBA il s'agit bien du même fcihizer lu (je l'ai vérifié).
Tant pis.
"Fred" a écrit dans le message de news: %
Dans le message:, Patrice Henrio écrit:
La taille du fichier est de 10 KO (je n'ai donné que le début).
Oui, je voulais surtout signaler qu'il peut être bon de vérifier la taille en octets du fichier pour voir si elle correspond bien au nombre d'enregistrements stockés (x6 la taille attendue d'un enregistrement) :-)
La déclaration est faite et de toutes façons redim a la fonction d'un dim (c'est aussi une déclaration de variable)
C'est LLimes et non TabLLimes qui manquait dans ton bout de code. Et comme cela intervient dans le calcul du ReDim ... D'où ma supposition.
Et pire sans rien changer cela marche ce matin comme il y deux jours. Peut-être l'oubli d'un erase qui perturbe sa gestion du tas ? Je n'ai rien trouvé de cohérent même si la structure lue semble suivre une logique précise.
On dirait que le fichier a été réécrit entre tes deux essais (vb et vba). Tu n'as pas une procédure d'enregistrement systématique en fin de programme qui utilise des Put avec une adresse en octets erronée ?
En tout cas cela reste bien mystérieux.
Si cela fonctionne maintenant, c'est le principal. Mais c'est frustrant de ne pas trouver une explication rationnelle :-D