OVH Cloud OVH Cloud

controle onglet, rafraichissement

6 réponses
Avatar
Bonjour a tous,

Bon alors voila j'avais fabriqué mes formulaires puis j'ai réalisé que ça
serait pas mal de tous les mettre dans un seul form et d'utiliser un
controle onglet pour les afficher...
Du coup j'ai pas mal galéré a recréer les bonnes références aux objets dans
mes codes VBA parce que mes forms sont maintenant devenus des sous forms...
mais c'est en passe d'etre réglé.

ce que je voudrais savoir, c'est quel code muige mettre sur chaque onglet
pour que lorsque je choisis un onglet , les données du sous form présent sur
la page soient rafraichies...

merci pour votre aide.

PS : si vous avez dans la tete de faire un formulaire basé sur des
onglets;.. commencez par creer ledit form avec le controle onglet... ça vous
evitera de faire 2 fois tout le travail :_)

6 réponses

Avatar
Raymond [mvp]
Bonsoir.

le sous-formulaire placé dans un onglet est reliée à un formulaire principal
par les champs père-fils et l'onglet n'intervient absolument pas dans cette
relation. le sous-formulaire est rafraichit par le changement de la donnée
père du formulaire principal, et tu n'as naucun code à exécuter.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


<camille> a écrit dans le message de news:
429715b3$0$7738$
Bonjour a tous,

Bon alors voila j'avais fabriqué mes formulaires puis j'ai réalisé que ça
serait pas mal de tous les mettre dans un seul form et d'utiliser un
controle onglet pour les afficher...
Du coup j'ai pas mal galéré a recréer les bonnes références aux objets
dans mes codes VBA parce que mes forms sont maintenant devenus des sous
forms... mais c'est en passe d'etre réglé.

ce que je voudrais savoir, c'est quel code muige mettre sur chaque onglet
pour que lorsque je choisis un onglet , les données du sous form présent
sur la page soient rafraichies...

merci pour votre aide.

PS : si vous avez dans la tete de faire un formulaire basé sur des
onglets;.. commencez par creer ledit form avec le controle onglet... ça
vous evitera de faire 2 fois tout le travail :_)



Avatar
ah ? y'a un truc que j'ai pas du comprendre alors car si je fais glisser un
form existant sur une page du controle onglet en mode création il prend le
nom "Fille xx" donc c'est pour ça que je l'appelles un sous formulaire (et
aussi parce que le form principal est celui qui contient tout... dont le
controle onglet) tu vois ce que je veux dire ?

je t'explique mon prob : j'ai un form qui contient un controle onglet de 3
pages, chaque page contient un (sous)form. quel code je dois mettre sur
l'onglet (ou sur chaque page de l'onglet ?) pour que quand je sélectionne
une page les données du sous form (ou form, comme tu veux...) qui est dessus
soient actualisées. c'est sur que je pourrais écrire une fonction pour
chaque page mais je me disais que c'est un truc tellement de base qu'il doit
y avoir qq chose de simple a faire pour gérer ça...

Merci beaucoup pour ta réponse.

Raymond [mvp] wrote:
Bonsoir.

le sous-formulaire placé dans un onglet est reliée à un formulaire
principal par les champs père-fils et l'onglet n'intervient
absolument pas dans cette relation. le sous-formulaire est rafraichit
par le changement de la donnée père du formulaire principal, et tu
n'as naucun code à exécuter.

<camille> a écrit dans le message de news:
429715b3$0$7738$
Bonjour a tous,

Bon alors voila j'avais fabriqué mes formulaires puis j'ai réalisé
que ça serait pas mal de tous les mettre dans un seul form et
d'utiliser un controle onglet pour les afficher...
Du coup j'ai pas mal galéré a recréer les bonnes références aux
objets dans mes codes VBA parce que mes forms sont maintenant
devenus des sous forms... mais c'est en passe d'etre réglé.

ce que je voudrais savoir, c'est quel code muige mettre sur chaque
onglet pour que lorsque je choisis un onglet , les données du sous
form présent sur la page soient rafraichies...

merci pour votre aide.

PS : si vous avez dans la tete de faire un formulaire basé sur des
onglets;.. commencez par creer ledit form avec le controle onglet...
ça vous evitera de faire 2 fois tout le travail :_)




Avatar
Raymond [mvp]
je crains de me répéter mais les onglets ne sont que des containers de
présentation des données et n'entrent pas dans la iérarchie des formulaires.
C'est comme s'ils n'existaient pas et fais comme s'ils n'existaient pas.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


<camille> a écrit dans le message de news:
429a167f$0$30104$
ah ? y'a un truc que j'ai pas du comprendre alors car si je fais glisser
un form existant sur une page du controle onglet en mode création il prend
le nom "Fille xx" donc c'est pour ça que je l'appelles un sous formulaire
(et aussi parce que le form principal est celui qui contient tout... dont
le controle onglet) tu vois ce que je veux dire ?

je t'explique mon prob : j'ai un form qui contient un controle onglet de 3
pages, chaque page contient un (sous)form. quel code je dois mettre sur
l'onglet (ou sur chaque page de l'onglet ?) pour que quand je sélectionne
une page les données du sous form (ou form, comme tu veux...) qui est
dessus soient actualisées. c'est sur que je pourrais écrire une fonction
pour chaque page mais je me disais que c'est un truc tellement de base
qu'il doit y avoir qq chose de simple a faire pour gérer ça...

Merci beaucoup pour ta réponse.



Avatar
3stone
Bonjour Camille,

<camille>
| ah ? y'a un truc que j'ai pas du comprendre alors car si je fais glisser un
| form existant sur une page du controle onglet en mode création il prend le
| nom "Fille xx" donc c'est pour ça que je l'appelles un sous formulaire (et
| aussi parce que le form principal est celui qui contient tout... dont le
| controle onglet) tu vois ce que je veux dire ?
|
| je t'explique mon prob : j'ai un form qui contient un controle onglet de 3
| pages, chaque page contient un (sous)form. quel code je dois mettre sur
| l'onglet (ou sur chaque page de l'onglet ?) pour que quand je sélectionne
| une page les données du sous form (ou form, comme tu veux...) qui est dessus
| soient actualisées. c'est sur que je pourrais écrire une fonction pour
| chaque page mais je me disais que c'est un truc tellement de base qu'il doit
| y avoir qq chose de simple a faire pour gérer ça...


Tu as parfaitement raison, le fait de "rassembler" des formulaires éparts
dans/sur un formulaire commun en font bien des sous-formulaires...
qui n'ont pas *forcément* de lien père/fils avec le formulaire principal :-)

Voilà ce que je te propose:
Si tu renomme tes contrôles sous-formulaires de la facon suivante (par exemple)
frm0, frm1, frm2....

tu peux écrire dans l'événement "sur changement" du contrôle d'onglet

Me("frm" & CtlTab0).Form.Requery


Remarques:
- Pour renommer tes contrôles sous-formulaires, sélectionne le cadre du sous-formulaire,
(le contrôle qui contient le sous-form en fait) et dans les propriétés, modifie la ligne
"Nom" dans l'onglet "Autres"
- Il faut bien séléctionner le "cadre" du contrôle d'onglet (CtlTab0 par exemple) et non un
quelconque onglet pour trouver l'événement 'sur changement'
- Etant donné que les onglets ont une valeur qui va de 0 à n, l'assemblage
("frm" & CtlTab0).Form s'adressera bien au formulaire de l'onglet séléctionné.

PS: Rassembler les formulaires / sous-formulaires dans une boite à onglet est une
bonne idée en soit...
Mais, si chaque form / sous-form contient (x)milliers d'enregistrements, l'ouverture
du formulaire principal peut devenir lent ou long, vu que Access ouvrira tous les
form / sous-form dès le départ...


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Ok, merci pour ta réponse claire.
je vais adapter ce que tu me dis

3stone wrote:
Bonjour Camille,

<camille>
ah ? y'a un truc que j'ai pas du comprendre alors car si je fais
glisser un form existant sur une page du controle onglet en mode
création il prend le nom "Fille xx" donc c'est pour ça que je
l'appelles un sous formulaire (et aussi parce que le form principal
est celui qui contient tout... dont le controle onglet) tu vois ce
que je veux dire ?

je t'explique mon prob : j'ai un form qui contient un controle
onglet de 3 pages, chaque page contient un (sous)form. quel code je
dois mettre sur l'onglet (ou sur chaque page de l'onglet ?) pour que
quand je sélectionne une page les données du sous form (ou form,
comme tu veux...) qui est dessus soient actualisées. c'est sur que
je pourrais écrire une fonction pour chaque page mais je me disais
que c'est un truc tellement de base qu'il doit y avoir qq chose de
simple a faire pour gérer ça...



Tu as parfaitement raison, le fait de "rassembler" des formulaires
éparts
dans/sur un formulaire commun en font bien des sous-formulaires...
qui n'ont pas *forcément* de lien père/fils avec le formulaire
principal :-)

Voilà ce que je te propose:
Si tu renomme tes contrôles sous-formulaires de la facon suivante
(par exemple)
frm0, frm1, frm2....

tu peux écrire dans l'événement "sur changement" du contrôle d'onglet

Me("frm" & CtlTab0).Form.Requery


Remarques:
- Pour renommer tes contrôles sous-formulaires, sélectionne le cadre
du sous-formulaire,
(le contrôle qui contient le sous-form en fait) et dans les
propriétés, modifie la ligne
"Nom" dans l'onglet "Autres"
- Il faut bien séléctionner le "cadre" du contrôle d'onglet (CtlTab0
par exemple) et non un
quelconque onglet pour trouver l'événement 'sur changement'
- Etant donné que les onglets ont une valeur qui va de 0 à n,
l'assemblage
("frm" & CtlTab0).Form s'adressera bien au formulaire de
l'onglet séléctionné.

PS: Rassembler les formulaires / sous-formulaires dans une boite à
onglet est une
bonne idée en soit...
Mais, si chaque form / sous-form contient (x)milliers
d'enregistrements, l'ouverture
du formulaire principal peut devenir lent ou long, vu que
Access ouvrira tous les
form / sous-form dès le départ...



Avatar
pour infos v u que j'avais pas envie de passer trop de temps a debugger mon
code et mes requetes si je changeais mes noms d'objets.... j'ai fait ça :

Private Sub CtlTab_Change()

nom = Array("Calendrier", "SyncCal", "Factures")
sf = nom(Me.CtlTab)
Me(sf).Form.Requery

End Sub

ça marche nickel.

camille wrote:
Ok, merci pour ta réponse claire.
je vais adapter ce que tu me dis

3stone wrote:
Bonjour Camille,

<camille>
ah ? y'a un truc que j'ai pas du comprendre alors car si je fais
glisser un form existant sur une page du controle onglet en mode
création il prend le nom "Fille xx" donc c'est pour ça que je
l'appelles un sous formulaire (et aussi parce que le form principal
est celui qui contient tout... dont le controle onglet) tu vois ce
que je veux dire ?

je t'explique mon prob : j'ai un form qui contient un controle
onglet de 3 pages, chaque page contient un (sous)form. quel code je
dois mettre sur l'onglet (ou sur chaque page de l'onglet ?) pour que
quand je sélectionne une page les données du sous form (ou form,
comme tu veux...) qui est dessus soient actualisées. c'est sur que
je pourrais écrire une fonction pour chaque page mais je me disais
que c'est un truc tellement de base qu'il doit y avoir qq chose de
simple a faire pour gérer ça...



Tu as parfaitement raison, le fait de "rassembler" des formulaires
éparts
dans/sur un formulaire commun en font bien des sous-formulaires...
qui n'ont pas *forcément* de lien père/fils avec le formulaire
principal :-)

Voilà ce que je te propose:
Si tu renomme tes contrôles sous-formulaires de la facon suivante
(par exemple)
frm0, frm1, frm2....

tu peux écrire dans l'événement "sur changement" du contrôle d'onglet

Me("frm" & CtlTab0).Form.Requery


Remarques:
- Pour renommer tes contrôles sous-formulaires, sélectionne le cadre
du sous-formulaire,
(le contrôle qui contient le sous-form en fait) et dans les
propriétés, modifie la ligne
"Nom" dans l'onglet "Autres"
- Il faut bien séléctionner le "cadre" du contrôle d'onglet (CtlTab0
par exemple) et non un
quelconque onglet pour trouver l'événement 'sur changement'
- Etant donné que les onglets ont une valeur qui va de 0 à n,
l'assemblage
("frm" & CtlTab0).Form s'adressera bien au formulaire de
l'onglet séléctionné.

PS: Rassembler les formulaires / sous-formulaires dans une boite à
onglet est une
bonne idée en soit...
Mais, si chaque form / sous-form contient (x)milliers
d'enregistrements, l'ouverture
du formulaire principal peut devenir lent ou long, vu que
Access ouvrira tous les
form / sous-form dès le départ...