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

Le code VBA généré automatiquement est douteux...!?

2 réponses
Avatar
dc
bonjour,

Avec Access 2000, lors de la création d'un formulaire, je rajoute un bouton.
Cela m'ouvre la fenêtre "Assistant Bouton de commande".
Je choisi "Opérations sur enregistrement / Sauvegarder enregistrement".

La ligne VBA générée est :
"DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70"

Hors on peut lire dans l'aide F1 :



<Début de citation>
Méthode DoMenuItem
Note Dans Microsoft Access 97, la méthode DoMenuItem avait été remplacée
par la méthode RunCommand. La méthode DoMenuItem figure dans cette version
de Microsoft Access uniquement par souci de compatibilité avec les versions
antérieures. Lorsque vous exécutez du code Visual Basic existant contenant
une méthode DoMenuItem, Microsoft Access affiche la commande de menu ou de
barre d'outils appropriée pour Microsoft Access 2000. Toutefois,
contrairement à l'action ExécuterElémentMenu dans une macro, une méthode
DoMenuItem dans Visual Basic n'est pas convertie en une méthode RunCommand
lorsque vous convertissez une base de données créée dans une version
antérieure de Microsoft Access.

Certaines commandes de versions antérieures de Microsoft Access ne sont pas
disponibles dans Microsoft Access 2000 et les méthodes DoMenuItem qui
exécutent ces commandes provoquent une erreur lorsqu'elles sont exécutées
dans Visual Basic. Vous devez modifier votre code Visual Basic pour
remplacer ou supprimer les occurrences de telles méthodes DoMenuItem.

.../...

Note Il n'existe pas de paramètre acMenuVer80 pour cet argument. Vous ne
pouvez pas utiliser la méthode DoMenuItem pour afficher des commandes
Microsoft Access 97 ou Microsoft Access 2000 (bien que les méthodes
DoMenuItem existantes dans du code Visual Basic continuent de fonctionner).
Utilisez plutôt la méthode RunCommand.

<Fin de citation>


En d'autres termes Access génère du code qui risque de provoquer des erreurs
! Comment cela se fais-ce ?

Y a-t-il moyen, par exemple dans les Options, de faire générer une ligne qui
contient "RunCommand" plutôt que "DoMenuItem" ?

2 réponses

Avatar
dc
Je repose la question en ne laissant que les phrases suspectes de la
citation :

<Début de citation>
les méthodes DoMenuItem qui exécutent ces commandes provoquent une erreur
lorsqu'elles sont exécutées dans Visual Basic.
....
Utilisez plutôt la méthode RunCommand.
<Fin de citation>



"dc" a écrit dans le message de
news:434123f8$0$21206$

bonjour,

Avec Access 2000, lors de la création d'un formulaire, je rajoute un
bouton.

Cela m'ouvre la fenêtre "Assistant Bouton de commande".
Je choisi "Opérations sur enregistrement / Sauvegarder enregistrement".

La ligne VBA générée est :
"DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70"

Hors on peut lire dans l'aide F1 :



<Début de citation>
Méthode DoMenuItem
Note Dans Microsoft Access 97, la méthode DoMenuItem avait été remplacée
par la méthode RunCommand. La méthode DoMenuItem figure dans cette version
de Microsoft Access uniquement par souci de compatibilité avec les
versions

antérieures. Lorsque vous exécutez du code Visual Basic existant contenant
une méthode DoMenuItem, Microsoft Access affiche la commande de menu ou de
barre d'outils appropriée pour Microsoft Access 2000. Toutefois,
contrairement à l'action ExécuterElémentMenu dans une macro, une méthode
DoMenuItem dans Visual Basic n'est pas convertie en une méthode RunCommand
lorsque vous convertissez une base de données créée dans une version
antérieure de Microsoft Access.

Certaines commandes de versions antérieures de Microsoft Access ne sont
pas

disponibles dans Microsoft Access 2000 et les méthodes DoMenuItem qui
exécutent ces commandes provoquent une erreur lorsqu'elles sont exécutées
dans Visual Basic. Vous devez modifier votre code Visual Basic pour
remplacer ou supprimer les occurrences de telles méthodes DoMenuItem.

.../...

Note Il n'existe pas de paramètre acMenuVer80 pour cet argument. Vous ne
pouvez pas utiliser la méthode DoMenuItem pour afficher des commandes
Microsoft Access 97 ou Microsoft Access 2000 (bien que les méthodes
DoMenuItem existantes dans du code Visual Basic continuent de
fonctionner).

Utilisez plutôt la méthode RunCommand.

<Fin de citation>


En d'autres termes Access génère du code qui risque de provoquer des
erreurs

! Comment cela se fais-ce ?

Y a-t-il moyen, par exemple dans les Options, de faire générer une ligne
qui

contient "RunCommand" plutôt que "DoMenuItem" ?





Avatar
3stone
Salut,

"dc"
| Avec Access 2000, lors de la création d'un formulaire, je rajoute un bouton.
| Cela m'ouvre la fenêtre "Assistant Bouton de commande".
| Je choisi "Opérations sur enregistrement / Sauvegarder enregistrement".
|
| La ligne VBA générée est :
| "DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70"
|
| Hors on peut lire dans l'aide F1 :


De manière générale, éviter les "DoMenuItem" qui proviennent (comme quelques autres)
des temps reculé d'Access ;-)

et qui sont encore et toujours généré par les assistants d'Accès 2003
au nom de la sacro-sainte compatibilité :-((

Donc, lorsqu'un assistant te génère cela, tu les remplacent par leur équivalent
"DoCmd.RunCommand accmd..."


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/