VBA : Changement du mode d'affichage

Le
Gloops
Bonjour tout le monde,

Je cherche changer le mode d'affichage d'un formulaire, par l'action =

d'une touche.

Par le menu, dclench par l'utilisateur, a se passe trs bien. =
On peut
passer du mode table au mode formulaire.

Par le code, si j'en crois la page
http://support.microsoft.com/kb/128425/en-us a donne, pour View / For=
m :
DoCmd.DoMenuItem A_FORMBAR, 2, 1, , A_MENU_VER20

Le premier ennui c'est que si je fais a je me ramasse une erreur 2174,=

impossible de changer de mode d'affichage pour le moment.

Normal, on est en train de traiter la touche.

Je renvoie a dans le timer, que je dclenche partir de la touche=
.

L'instruction s'excute proprement, sans message d'erreur, ce que je
peux vrifier en recommenant aprs avoir mis une pause dessus, mai=
s
l'ennui c'est que a ne se voit pas l'cran : le formulaire reste=
en
mode table.

Si je fais par curiosit une simulation de touches pour appeler le menu=

(pas terrible, a fonctionne dans une version et termin), erreur 217=
4,
sauf si je laisse l'utilisateur valider par Entre.

Est-ce que a inspire quelqu'un ? Ouvrir un autre formulaire pour qu'il=

vienne modifier le mode d'affichage de celui-ci ? Hum, un peu lourd,
peut-tre ?
Je m'en suis sorti en fermant et rouvrant le formulaire, avec une
variable boolenne pour arrter le code.


(Access 2003 SP2, Windows XP Pro)
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #6380931
Salut,

"Gloops" Je cherche à changer le mode d'affichage d'un formulaire, par l'action
d'une touche.

Par le menu, déclenché par l'utilisateur, ça se passe très bien. On peut
passer du mode table au mode formulaire.

Par le code, si j'en crois la page
http://support.microsoft.com/kb/128425/en-us ça donne, pour View / Form :
DoCmd.DoMenuItem A_FORMBAR, 2, 1, , A_MENU_VER20
[...]



Evite les 'DoMenuItem' qui datent de Access 2.0 ;-(

Utilise plutôt :

DoCmd.RunCommand acCmdFormView
et
DoCmd.RunCommand acCmdDatasheetView

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Gloops
Le #6335251
3stone a écrit, le 12/11/2007 21:07 :
Evite les 'DoMenuItem' qui datent de Access 2.0 ;-(

Utilise plutôt :

DoCmd.RunCommand acCmdFormView
et
DoCmd.RunCommand acCmdDatasheetView



Ah, effectivement, ils étaient passés à travers, ceux-là :)

Le seul ennui, c'est que ça laisse Access de marbre :

Pendant et après DoCmd.RunCommand acCmdFormView, le formulaire courant
reste affiché en mode table.
Il faut mettre une pause dans la procédure pour être sûr qu'elle es t
exécutée.

Je me demande quoi faire avec l'aide de acFormView, qui présente
quelques constantes, et rien d'autre :
acDesign = 1
acFormDS = 3
acFormPivotChart = 5
acFormPivotTable = 4
acNormal = 0
acPreview = 2

3stone
Le #6335221
Salut,

"Gloops"
3stone a écrit, le 12/11/2007 21:07 :
Evite les 'DoMenuItem' qui datent de Access 2.0 ;-(

Utilise plutôt :

DoCmd.RunCommand acCmdFormView
et
DoCmd.RunCommand acCmdDatasheetView



Ah, effectivement, ils étaient passés à travers, ceux-là :)

Le seul ennui, c'est que ça laisse Access de marbre :
----

Le 'DoCmd' s'adresse en principe à l'objet qui a le focus...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)

Gloops
Le #6335191
3stone a écrit, le 19/11/2007 20:08 :

Le 'DoCmd' s'adresse en principe à l'objet qui a le focus...



Ah, ça, pour avoir le focus, il a le focus ...

Je me suis fait jeter depuis Form_KeyPress, alors j'ai déclenché un
Form_Timer, et l'instruction est bien exécutée. Tant que je ne mets p as
de pause dedans, je n'ai aucun moyen d'en être sûr.

Etant donné qu'il n'y a

Gloops
Le #6335181
Gloops a écrit, le 19/11/2007 21:25 :
3stone a écrit, le 19/11/2007 20:08 :

Le 'DoCmd' s'adresse en principe à l'objet qui a le focus...



Ah, ça, pour avoir le focus, il a le focus ...

Je me suis fait jeter depuis Form_KeyPress, alors j'ai déclenché un
Form_Timer, et l'instruction est bien exécutée. Tant que je ne mets pas
de pause dedans, je n'ai aucun moyen d'en être sûr.

Etant donné qu'il n'y a
aucun autre moyen que le focus pour indiquer à quel formulaire s'adress e

l'instruction, je me doutais un peu qu'il était nécessaire :)


Publicité
Poster une réponse
Anonyme