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

VBA : Changement du mode d'affichage

5 réponses
Avatar
Gloops
Bonjour tout le monde,

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

d'une touche.

Par le menu, d=E9clench=E9 par l'utilisateur, =E7a se passe tr=E8s bien. =
On peut=20
passer du mode table au mode formulaire.

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

Le premier ennui c'est que si je fais =E7a je me ramasse une erreur 2174,=
=20
impossible de changer de mode d'affichage pour le moment.

Normal, on est en train de traiter la touche.

Je renvoie =E7a dans le timer, que je d=E9clenche =E0 partir de la touche=
=2E

L'instruction s'ex=E9cute proprement, sans message d'erreur, ce que je=20
peux v=E9rifier en recommen=E7ant apr=E8s avoir mis une pause dessus, mai=
s=20
l'ennui c'est que =E7a ne se voit pas =E0 l'=E9cran : le formulaire reste=
en=20
mode table.

Si je fais par curiosit=E9 une simulation de touches pour appeler le menu=
=20
(pas terrible, =E7a fonctionne dans une version et termin=E9), erreur 217=
4,=20
sauf si je laisse l'utilisateur valider par Entr=E9e.

Est-ce que =E7a inspire quelqu'un ? Ouvrir un autre formulaire pour qu'il=
=20
vienne modifier le mode d'affichage de celui-ci ? Hum, un peu lourd,=20
peut-=EAtre ?
Je m'en suis sorti en fermant et rouvrant le formulaire, avec une=20
variable bool=E9enne pour arr=EAter le code.


(Access 2003 SP2, Windows XP Pro)

5 réponses

Avatar
3stone
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)
Avatar
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 :

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

Avatar
3stone
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)

Avatar
Gloops
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

Avatar
Gloops
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 :)