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

Access 97 - problème MDB MDE

5 réponses
Avatar
Robert
Bonjour
J'ai une base (frontend) que j'ai transformé en MDE. Sur presque tous les
PC's l'MDE fonctionne correctement sauf 1. J'ai un message d'erreur un HALT
dans une fonction au démarrage. En exécutant l'MDB; même code donc sauf pas
compilé, cela fonctionne. L'OS est un winXP, access 97 est installé en
parallèle avec un office2003 ... mais c'est la même chose sur tous les autres
PC's, je ne pense pas que cela vienne de là.
Qn a t il une idée ... Merci
Robert

5 réponses

Avatar
Dom
Bonsoir Robert,

"Robert" wrote:
Bonjour
J'ai une base (frontend) que j'ai transformé en MDE. Sur presque tous les
PC's l'MDE fonctionne correctement sauf 1. J'ai un message d'erreur un
HALT
dans une fonction au démarrage



Quel est le message d'erreur exact ?

. En exécutant l'MDB; même code donc sauf pas
compilé, cela fonctionne.



Donc, si j'ai bien compris..., ton mdb fonctionne mais pas ton mde ?

L'OS est un winXP, access 97 est installé en
parallèle avec un office2003 ... mais c'est la même chose sur tous les
autres
PC's, je ne pense pas que cela vienne de là.
Qn a t il une idée ... Merci



N'y aurait t'il une référence VBA absente sur ce PC ?

Cordialement,

Dominique.
Avatar
Gloops
Bonjour Robert,

Dom t'a posé les bonnes questions, maintenant histoire de faire gagn er
du temps j'anticiperais bien l'étape suivante (en espérant que tu ne
décroches pas puisque je balance tout d'un bloc).

Il convient de localiser quel est le code qui s'exécute au déma rrage
lorsque se produit l'erreur, il y a plusieurs possibilités pour ç a dont
les macros auto quelque chose, je commencerais bien par le formulaire
sélectionné dans les options de démarrage, et aller y voir le code de
Form_Open et Form_Load (d'ailleurs, normalement, si c'est toi qui as
écrit la base, tu dois bien avoir une petite idée de ce qu'elle exécute
en premier).

En standard c'est une bonne chose d'avoir des procédures d'erreurs
suffisamment prolixes, comme ça on en a tout de suite le cœur n et dès
que l'erreur se produit.

On Error Goto erreur

...

erreur:
MsgBox ("Error n° " + VBA.Str$(Err.Number) + " in " + _
Err.Source + " : " + vbCrLf + Err.Description,,_
(nom du module) + "." + (nom de la procédure)

A partir de là, une fois que tu as bien le nom du formulaire comme d e la
procédure, tu vas pouvoir préciser davantage.

Devant chaque ligne de la procédure en cause, tu places un numé ro suivi
d'un double point :

1: If X = Y Then
2: MsgBox "X = Y"
3: Else
4: MsgBox "X <> Y"
5: End If

et ainsi de suite.

Tu modifies ta procédure d'erreurs pour afficher le numéro de l igne, qui
est retourné d'après les numéros placés en début de ligne, sous forme
d'un entier, par Erl, donc ça va donner :

erreur:
MsgBox ("Error n° " + VBA.Str$(Err.Number) + " in " + _
Err.Source + " at line " + VBA.Str$(Erl) + " : " + _
vbCrLf + Err.Description,,_
(nom du module) + "." + (nom de la procédure)

De cette manière, le message t'indique le numéro de la ligne oà ¹ s'est
produite l'erreur, donc si tu as numéroté chaque instruction, à §a te
permet de savoir quelle est l'instruction en cause. Bien entendu, une
fois que tu as fait les modifs ci-dessus, il faut de nouveau géné rer le
fichier MDE et l'envoyer sur la machine qui pose problème, et y ouvr ir
la base, pour voir le message qui s'affiche.

Il y a des chances que tu comprennes alors de toi-même ce qui peut
clocher, sinon tu peux venir ici donner plus de détails, et on pourr a te
répondre de façon plus ciblée.


(doc : chercher "Erl" sur
http://silkyroad.developpez.com/VBA/VisualBasicEditor/

Ah, ils ne mettent pas de double-point, eux.
)

Dans mon exemple j'ai mis des numéros qui se suivent, mais numé roter de
dix en dix ou de cent en cent peut être plus futé, car comme à §a si on a
des instructions à insérer ensuite ça n'empêche pas d 'avoir des numéros
qui se suivent.

(si il faut que je remette une couche, il se peut que ça reporte au
week-end prochain)
_____________________________________
Robert a écrit, le 20/06/2008 15:48 :
Bonjour
J'ai une base (frontend) que j'ai transformé en MDE. Sur presque t ous les
PC's l'MDE fonctionne correctement sauf 1. J'ai un message d'erreur un HALT
dans une fonction au démarrage. En exécutant l'MDB; même code donc sauf pas
compilé, cela fonctionne. L'OS est un winXP, access 97 est install é en
parallèle avec un office2003 ... mais c'est la même chose sur tous les autres
PC's, je ne pense pas que cela vienne de là.
Qn a t il une idée ... Merci
Robert


Avatar
Robert
Salut à tous et merci de vos réponses

Le message d'erreur est "l'expression entrée a un nom de fonction non trouvée"

J'ai effectivement une macro autoexec avec un runcode sur une procédure
J'ai créé devant chaque ligne une ligne de code qui m'écrit dans un fichier
txt le step by step. Ceci fonctionne SAUF sur le dit PC où j'ai toujours le
même message d'erreur et pas de création de log. Du coup je penche
effectivement vers une ref non présente; mais pourquoi cette référence
serait-elle manquante dans la MDE et pas dans le MDB .... si c'est le même
code. De plus comment la référencer si je n'arrive même pas à exécuter le
moindre code à l'ouverture.

"Gloops" a écrit :

Bonjour Robert,

Dom t'a posé les bonnes questions, maintenant histoire de faire gagner
du temps j'anticiperais bien l'étape suivante (en espérant que tu ne
décroches pas puisque je balance tout d'un bloc).

Il convient de localiser quel est le code qui s'exécute au démarrage
lorsque se produit l'erreur, il y a plusieurs possibilités pour ça dont
les macros auto quelque chose, je commencerais bien par le formulaire
sélectionné dans les options de démarrage, et aller y voir le code de
Form_Open et Form_Load (d'ailleurs, normalement, si c'est toi qui as
écrit la base, tu dois bien avoir une petite idée de ce qu'elle exécute
en premier).

En standard c'est une bonne chose d'avoir des procédures d'erreurs
suffisamment prolixes, comme ça on en a tout de suite le cœur net dès
que l'erreur se produit.

On Error Goto erreur

...

erreur:
MsgBox ("Error n° " + VBA.Str$(Err.Number) + " in " + _
Err.Source + " : " + vbCrLf + Err.Description,,_
(nom du module) + "." + (nom de la procédure)

A partir de là, une fois que tu as bien le nom du formulaire comme de la
procédure, tu vas pouvoir préciser davantage.

Devant chaque ligne de la procédure en cause, tu places un numéro suivi
d'un double point :

1: If X = Y Then
2: MsgBox "X = Y"
3: Else
4: MsgBox "X <> Y"
5: End If

et ainsi de suite.

Tu modifies ta procédure d'erreurs pour afficher le numéro de ligne, qui
est retourné d'après les numéros placés en début de ligne, sous forme
d'un entier, par Erl, donc ça va donner :

erreur:
MsgBox ("Error n° " + VBA.Str$(Err.Number) + " in " + _
Err.Source + " at line " + VBA.Str$(Erl) + " : " + _
vbCrLf + Err.Description,,_
(nom du module) + "." + (nom de la procédure)

De cette manière, le message t'indique le numéro de la ligne où s'est
produite l'erreur, donc si tu as numéroté chaque instruction, ça te
permet de savoir quelle est l'instruction en cause. Bien entendu, une
fois que tu as fait les modifs ci-dessus, il faut de nouveau générer le
fichier MDE et l'envoyer sur la machine qui pose problème, et y ouvrir
la base, pour voir le message qui s'affiche.

Il y a des chances que tu comprennes alors de toi-même ce qui peut
clocher, sinon tu peux venir ici donner plus de détails, et on pourra te
répondre de façon plus ciblée.


(doc : chercher "Erl" sur
http://silkyroad.developpez.com/VBA/VisualBasicEditor/

Ah, ils ne mettent pas de double-point, eux.
)

Dans mon exemple j'ai mis des numéros qui se suivent, mais numéroter de
dix en dix ou de cent en cent peut être plus futé, car comme ça si on a
des instructions à insérer ensuite ça n'empêche pas d'avoir des numéros
qui se suivent.

(si il faut que je remette une couche, il se peut que ça reporte au
week-end prochain)
_____________________________________
Robert a écrit, le 20/06/2008 15:48 :
> Bonjour
> J'ai une base (frontend) que j'ai transformé en MDE. Sur presque tous les
> PC's l'MDE fonctionne correctement sauf 1. J'ai un message d'erreur un HALT
> dans une fonction au démarrage. En exécutant l'MDB; même code donc sauf pas
> compilé, cela fonctionne. L'OS est un winXP, access 97 est installé en
> parallèle avec un office2003 ... mais c'est la même chose sur tous les autres
> PC's, je ne pense pas que cela vienne de là.
> Qn a t il une idée ... Merci
> Robert




Avatar
Fabien
Gloops wrote:
Bonjour Robert,

Dom t'a posé les bonnes questions, maintenant histoire de faire gagner
du temps j'anticiperais bien l'étape suivante (en espérant que tu ne
décroches pas puisque je balance tout d'un bloc).

Il convient de localiser quel est le code qui s'exécute au démarrage
lorsque se produit l'erreur, il y a plusieurs possibilités pour ça dont
les macros auto quelque chose, je commencerais bien par le formulaire
sélectionné dans les options de démarrage, et aller y voir le code de
Form_Open et Form_Load (d'ailleurs, normalement, si c'est toi qui as
écrit la base, tu dois bien avoir une petite idée de ce qu'elle exécute
en premier).

En standard c'est une bonne chose d'avoir des procédures d'erreurs
suffisamment prolixes, comme ça on en a tout de suite le cœur net dès
que l'erreur se produit.

On Error Goto erreur

...

erreur:
MsgBox ("Error n° " + VBA.Str$(Err.Number) + " in " + _
Err.Source + " : " + vbCrLf + Err.Description,,_
(nom du module) + "." + (nom de la procédure)

A partir de là, une fois que tu as bien le nom du formulaire comme de la
procédure, tu vas pouvoir préciser davantage.

Devant chaque ligne de la procédure en cause, tu places un numéro suivi
d'un double point :

1: If X = Y Then
2: MsgBox "X = Y"
3: Else
4: MsgBox "X <> Y"
5: End If

et ainsi de suite.

Tu modifies ta procédure d'erreurs pour afficher le numéro de ligne, qui
est retourné d'après les numéros placés en début de ligne, sous forme
d'un entier, par Erl, donc ça va donner :

erreur:
MsgBox ("Error n° " + VBA.Str$(Err.Number) + " in " + _
Err.Source + " at line " + VBA.Str$(Erl) + " : " + _
vbCrLf + Err.Description,,_
(nom du module) + "." + (nom de la procédure)

De cette manière, le message t'indique le numéro de la ligne où s'est
produite l'erreur, donc si tu as numéroté chaque instruction, ça te
permet de savoir quelle est l'instruction en cause. Bien entendu, une
fois que tu as fait les modifs ci-dessus, il faut de nouveau générer le
fichier MDE et l'envoyer sur la machine qui pose problème, et y ouvrir
la base, pour voir le message qui s'affiche.

Il y a des chances que tu comprennes alors de toi-même ce qui peut
clocher, sinon tu peux venir ici donner plus de détails, et on pourra te
répondre de façon plus ciblée.


(doc : chercher "Erl" sur
http://silkyroad.developpez.com/VBA/VisualBasicEditor/

Ah, ils ne mettent pas de double-point, eux.
)

Dans mon exemple j'ai mis des numéros qui se suivent, mais numéroter de
dix en dix ou de cent en cent peut être plus futé, car comme ça si on a
des instructions à insérer ensuite ça n'empêche pas d'avoir des numéros
qui se suivent.

(si il faut que je remette une couche, il se peut que ça reporte au
week-end prochain)
_____________________________________
Robert a écrit, le 20/06/2008 15:48 :
Bonjour
J'ai une base (frontend) que j'ai transformé en MDE. Sur presque tous
les PC's l'MDE fonctionne correctement sauf 1. J'ai un message
d'erreur un HALT dans une fonction au démarrage. En exécutant l'MDB;
même code donc sauf pas compilé, cela fonctionne. L'OS est un winXP,
access 97 est installé en parallèle avec un office2003 ... mais c'est
la même chose sur tous les autres PC's, je ne pense pas que cela
vienne de là.
Qn a t il une idée ... Merci
Robert





Salut
Je viens de suivre le lien que tu a indiqué dans ton post.
Le petit utilitaire signalé m'a l'air pas mal du tout
http://www.mztools.com/v3/download.aspx
Merci
@+
Avatar
Gloops
Robert a écrit, le 27/06/2008 08:47 :
Salut à tous et merci de vos réponses

Le message d'erreur est "l'expression entrée a un nom de fonction non trouvée"

J'ai effectivement une macro autoexec avec un runcode sur une procé dure
J'ai créé devant chaque ligne une ligne de code qui m'éc rit dans un fichier
txt le step by step.



C'est aussi une idée.

Ceci fonctionne SAUF sur le dit PC où j'ai toujours le
même message d'erreur et pas de création de log.



Ah, dans ce cas l'idée n'était pas si bonne, peut-être vau t-il mieux se
rabattre sur la solution standard, car "un message d'erreur", ce n'est
pas suffisant, et "l'expression entrée" non plus, il faudrait savoir
quelle expression.

Du coup je penche
effectivement vers une ref non présente; mais pourquoi cette ré férence
serait-elle manquante dans la MDE et pas dans le MDB .... si c'est le m ême
code.



Il est possible d'afficher par code la liste des références, vo ir la
collection References dans l'aide. Comme support de sortie on peut
choisir ou un fichier texte ou un formulaire ou un état, selon ce qu 'on
a sous la main qui veut bien fonctionner.

De plus comment la référencer si je n'arrive même pas à   exécuter le
moindre code à l'ouverture.




Certes il faut savoir quelle est la référence manquante.