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

Erreur dans une application VBA

4 réponses
Avatar
Tchantchet
Bonjour =E0 tous,

J'ai r=E9alis=E9 une application en VBA assez importante. Celle-ci utilise
des fichiers index=E9s (random) et des fichiers d'index.
Les fonctions :
ouverture : Open "D:\CMK\CMKFICHE\MACHINE.IND" For Random As #1 Len =3D
Len(MRECORD)
Ecriture : Put #1, INDEX, MRECORD
Lecture : Get #1, INDEX, MRECORD

MRECORD =E9tat d=E9finit dans les d=E9clarations Public MRECORD As
MACHINERECORD
et MACHINERECORD d=E9finit l'enregistrement de 279 caract=E8res de champs
diff=E9rents.

J'ai cr=E9=E9 plusieurs modules qui traitent diff=E9rents sujets dans cette
application. En en-t=EAte de chaque module, j'ai report=E9 les m=EAmes
d=E9clarations de variables, tableaux, et enregistrements, ce qui est
inutile vraisemblablement puisque toutes ces variables sont d=E9clar=E9es
"publiques".

Soit ... Lors de la lecture ou l'=E9criture d'un enregistrement dans un
fichier index=E9, Il me vient de temps en temps une erreur " Longueur
d'enregistrement incorrecte". L'arr=EAt du programme cause un probl=E8me
s=E9rieux en =E9criture bien entendu.

Il y a tellement longtemps que je cherche d'o=F9 provient cette erreur
que j'ai remarqu=E9 que la r=E9initialisation du programme faisait
dispara=EEtre cette erreur. Pour ce faire, je dois neutraliser une ligne
quelconque dans la plage des d=E9clarations, compiler, puis rendre la
ligne =E0 nouveau active et recompiler.
J'ai d=E9j=E0 contr=F4l=E9 maintes fois la longueur d'enregistrement et n'a=
i
jamais trouv=E9 d'erreur et je crois que l'erreur d=E9sign=E9e n'est pas la
vraie erreur.

Auriez-vous une id=E9e pour r=E9soudre ce probl=E8me ou tout au moins pour
trouver l'erreur.

Merci d'avance

4 réponses

Avatar
michdenis
Tu trouves un bon livre (chapitre) sur la déclaration
et l'utilisation des variables et tu fais un brin de lecture !

Si tu déclares comme "Public" un nom de variable dans
plusieurs modules "Standard", La variable "Public" déclarée
dans un module aura préséance lors de l'exécution du code
sur la variable Public du même nom déclarée dans un autre
module. La conséquence de tout ceci, non seulement excel
aura de la difficulté à s'y retrouver, mais toi, tu risques d'avoir
de sérieux mots de tête à débugger ton application.

Chaque variable peut avoir 255 caractères ce qui donne suffisamment
de souplesse pour éviter "à tout prix" les doublons dans le nom de
celle-ci.

Si tu as vraiment besoin de variables "Public", Tu peux te créer un module
standard dont la fonction sera de contenir leur déclaration si le nombre le
justifie.

Dans un module de classe tel que les modules "Feuille", "ThisWorkbook" ou
"module de classe" que tu peux ajouter à ton programme, la déclaration
d'une variable Public crée une "PROPRIÉTÉ" appartenant à cette classe
d'objet et non une variable... et pour faire référence à cette propriété, tu
dois utiliser le nom de l'objet devant la propriété comme :
Feuil1.MaVariable
pour y faiire référence ailleurs que dans le module où elle a été créée.

Organise ta déclaration de variable et observe si tu as toujours le même
problème !



"Tchantchet" a écrit dans le message de news:

Bonjour à tous,

J'ai réalisé une application en VBA assez importante. Celle-ci utilise
des fichiers indexés (random) et des fichiers d'index.
Les fonctions :
ouverture : Open "D:CMKCMKFICHEMACHINE.IND" For Random As #1 Len Len(MRECORD)
Ecriture : Put #1, INDEX, MRECORD
Lecture : Get #1, INDEX, MRECORD

MRECORD état définit dans les déclarations Public MRECORD As
MACHINERECORD
et MACHINERECORD définit l'enregistrement de 279 caractères de champs
différents.

J'ai créé plusieurs modules qui traitent différents sujets dans cette
application. En en-tête de chaque module, j'ai reporté les mêmes
déclarations de variables, tableaux, et enregistrements, ce qui est
inutile vraisemblablement puisque toutes ces variables sont déclarées
"publiques".

Soit ... Lors de la lecture ou l'écriture d'un enregistrement dans un
fichier indexé, Il me vient de temps en temps une erreur " Longueur
d'enregistrement incorrecte". L'arrêt du programme cause un problème
sérieux en écriture bien entendu.

Il y a tellement longtemps que je cherche d'où provient cette erreur
que j'ai remarqué que la réinitialisation du programme faisait
disparaître cette erreur. Pour ce faire, je dois neutraliser une ligne
quelconque dans la plage des déclarations, compiler, puis rendre la
ligne à nouveau active et recompiler.
J'ai déjà contrôlé maintes fois la longueur d'enregistrement et n'ai
jamais trouvé d'erreur et je crois que l'erreur désignée n'est pas la
vraie erreur.

Auriez-vous une idée pour résoudre ce problème ou tout au moins pour
trouver l'erreur.

Merci d'avance
Avatar
Tchantchet
On 15 nov, 13:14, "michdenis" wrote:
Tu trouves un bon livre (chapitre) sur la déclaration
et l'utilisation des variables et tu fais un brin de lecture !

Si tu déclares comme "Public" un nom de variable dans
plusieurs modules "Standard", La variable "Public" déclarée
dans un module aura préséance lors de l'exécution du code
sur la variable Public du même nom déclarée dans un autre
module. La conséquence de tout ceci, non seulement excel
aura de la difficulté à s'y retrouver, mais toi, tu risques d'avoir
de sérieux mots de tête à débugger ton application.

Chaque variable peut avoir 255 caractères ce qui donne suffisamment
de souplesse pour éviter "à tout prix" les doublons dans le nom de
celle-ci.

Si tu as vraiment besoin de variables "Public", Tu peux te créer un mod ule
standard dont la fonction sera de contenir leur déclaration si le nombr e le
justifie.

Dans un module de classe tel que les modules "Feuille", "ThisWorkbook" ou
"module de classe" que tu peux ajouter à ton programme, la déclaratio n
d'une variable Public crée une "PROPRIÉTÉ" appartenant à cette cl asse
d'objet et non une variable... et pour faire référence à cette prop riété, tu
dois utiliser le nom de l'objet devant la propriété comme :
Feuil1.MaVariable
pour y faiire référence ailleurs que dans le module où elle a ét é créée.

Organise ta déclaration de variable et observe si tu as toujours le m ême
problème !

"Tchantchet" a écrit dans le message de n ews:

Bonjour à tous,

J'ai réalisé une application en VBA assez importante. Celle-ci utilis e
des fichiers indexés (random) et des fichiers d'index.
Les fonctions :
ouverture : Open "D:CMKCMKFICHEMACHINE.IND" For Random As #1 Len =
Len(MRECORD)
Ecriture : Put #1, INDEX, MRECORD
Lecture : Get #1, INDEX, MRECORD

MRECORD état définit dans les déclarations Public MRECORD As
MACHINERECORD
et MACHINERECORD définit l'enregistrement de 279 caractères de champs
différents.

J'ai créé plusieurs modules qui traitent différents sujets dans cet te
application. En en-tête de chaque module, j'ai reporté les mêmes
déclarations de variables, tableaux, et enregistrements, ce qui est
inutile vraisemblablement  puisque toutes ces variables sont déclar ées
"publiques".

Soit ... Lors de la lecture ou l'écriture d'un enregistrement dans un
fichier indexé, Il me vient de temps en temps une erreur " Longueur
d'enregistrement incorrecte". L'arrêt du programme cause un problème
sérieux en écriture bien entendu.

Il y a tellement longtemps que je cherche d'où provient cette erreur
que j'ai remarqué que la réinitialisation du programme faisait
disparaître cette erreur. Pour ce faire, je dois neutraliser une ligne
quelconque dans la plage des déclarations, compiler, puis rendre la
ligne à nouveau active et recompiler.
J'ai déjà contrôlé maintes fois la longueur d'enregistrement et n 'ai
jamais trouvé d'erreur et je crois que l'erreur désignée n'est pas la
vraie erreur.

Auriez-vous une idée pour résoudre ce problème ou tout au moins pou r
trouver l'erreur.

Merci d'avance



Je te remercie michdenis. Je vais tâcher de mettre de l'ordre dans
cette application.
Avatar
Jacquouille
Bonsoir Denis
Puisque nous en sommes à la longueur...
En VBA, le nombre de caractères est-il libre ou limité à un certain nombre
pour l'écriture d'une ligne ?
Merci et Bonne soirée à toi

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.

"michdenis" a écrit dans le message de news:
%
Tu trouves un bon livre (chapitre) sur la déclaration
et l'utilisation des variables et tu fais un brin de lecture !

Si tu déclares comme "Public" un nom de variable dans
plusieurs modules "Standard", La variable "Public" déclarée
dans un module aura préséance lors de l'exécution du code
sur la variable Public du même nom déclarée dans un autre
module. La conséquence de tout ceci, non seulement excel
aura de la difficulté à s'y retrouver, mais toi, tu risques d'avoir
de sérieux mots de tête à débugger ton application.

Chaque variable peut avoir 255 caractères ce qui donne suffisamment
de souplesse pour éviter "à tout prix" les doublons dans le nom de
celle-ci.

Si tu as vraiment besoin de variables "Public", Tu peux te créer un module
standard dont la fonction sera de contenir leur déclaration si le nombre
le
justifie.

Dans un module de classe tel que les modules "Feuille", "ThisWorkbook" ou
"module de classe" que tu peux ajouter à ton programme, la déclaration
d'une variable Public crée une "PROPRIÉTÉ" appartenant à cette classe
d'objet et non une variable... et pour faire référence à cette propriété,
tu
dois utiliser le nom de l'objet devant la propriété comme :
Feuil1.MaVariable
pour y faiire référence ailleurs que dans le module où elle a été créée.

Organise ta déclaration de variable et observe si tu as toujours le même
problème !



"Tchantchet" a écrit dans le message de
news:

Bonjour à tous,

J'ai réalisé une application en VBA assez importante. Celle-ci utilise
des fichiers indexés (random) et des fichiers d'index.
Les fonctions :
ouverture : Open "D:CMKCMKFICHEMACHINE.IND" For Random As #1 Len > Len(MRECORD)
Ecriture : Put #1, INDEX, MRECORD
Lecture : Get #1, INDEX, MRECORD

MRECORD état définit dans les déclarations Public MRECORD As
MACHINERECORD
et MACHINERECORD définit l'enregistrement de 279 caractères de champs
différents.

J'ai créé plusieurs modules qui traitent différents sujets dans cette
application. En en-tête de chaque module, j'ai reporté les mêmes
déclarations de variables, tableaux, et enregistrements, ce qui est
inutile vraisemblablement puisque toutes ces variables sont déclarées
"publiques".

Soit ... Lors de la lecture ou l'écriture d'un enregistrement dans un
fichier indexé, Il me vient de temps en temps une erreur " Longueur
d'enregistrement incorrecte". L'arrêt du programme cause un problème
sérieux en écriture bien entendu.

Il y a tellement longtemps que je cherche d'où provient cette erreur
que j'ai remarqué que la réinitialisation du programme faisait
disparaître cette erreur. Pour ce faire, je dois neutraliser une ligne
quelconque dans la plage des déclarations, compiler, puis rendre la
ligne à nouveau active et recompiler.
J'ai déjà contrôlé maintes fois la longueur d'enregistrement et n'ai
jamais trouvé d'erreur et je crois que l'erreur désignée n'est pas la
vraie erreur.

Auriez-vous une idée pour résoudre ce problème ou tout au moins pour
trouver l'erreur.

Merci d'avance




Avatar
michdenis
| En VBA, le nombre de caractères est-il libre ou limité
| à un certain nombre pour l'écriture d'une ligne ?


Une ligne de code dans l'éditeur vba ne peut pas dépasser 1024 caractères...
comprenant caractères, espace et guillemets...

Je n'ai jamais eu besoin d'aller au delà !