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

Sous=formulaire

23 réponses
Avatar
Albert
Bonjour

Base.MDB gérée avec Access 2007 ou 2010.
J'ai un formulaire et dessous un sous formulaire (relation père-fils) en
mode feuille de données qui affiche 5 lignes.
On ajoute continuellement des données dans le sous formulaire, et quand il y
a plus que cinq entrées il faut utiliser l'ascenceur pour aller à la
dernière ligne, cela devient vite fastidieux, surtout si la liste est
longue.
Est-il possible que le sous formulaire affiche les dernières données entrées
au lieu des premières ?

Vos suggestions sont bienvenues.
merci

--
albertri-at-videotron.ca.invalid

10 réponses

1 2 3
Avatar
Gloops
Albert a écrit, le 06/09/2012 04:09 :
Bonjour

Base.MDB gérée avec Access 2007 ou 2010.
J'ai un formulaire et dessous un sous formulaire (relation père-fils) en
mode feuille de données qui affiche 5 lignes.
On ajoute continuellement des données dans le sous formulaire, et qua nd
il y a plus que cinq entrées il faut utiliser l'ascenceur pour aller à
la dernière ligne, cela devient vite fastidieux, surtout si la liste est
longue.
Est-il possible que le sous formulaire affiche les dernières donnée s
entrées au lieu des premières ?

Vos suggestions sont bienvenues.
merci





Bonjour,

Voir la requête sur laquelle est basée le sous-formulaire, plus
particulièrement sa clause ORDER BY.
Avatar
Blaise
Le 6/09/2012 4:09, Albert a écrit :
Bonjour

Base.MDB gérée avec Access 2007 ou 2010.
J'ai un formulaire et dessous un sous formulaire (relation père-fils) en
mode feuille de données qui affiche 5 lignes.
On ajoute continuellement des données dans le sous formulaire, et quand
il y a plus que cinq entrées il faut utiliser l'ascenceur pour aller à
la dernière ligne, cela devient vite fastidieux, surtout si la liste est
longue.
Est-il possible que le sous formulaire affiche les dernières données
entrées au lieu des premières ?

Vos suggestions sont bienvenues.
merci



Sur l'événement chargement (load)
DoCmd.GoToRecord , , acNewRec
Avatar
Albert
Bonjour Blaise
"Blaise" a écrit dans le message de
news:k29n9n$j6c$

Vous avez bien saisie l'idée de ma demande.
Quand j'ouvre le formulaire seul, créé pour utiliser comme sous formulaire,
en mode feuille de données avec l'ajout de "DoCmd.GoToRecord , , acNewRec"
placé sur l'évènement "Sur OUVERTURE" ouvre le formulaire à la dernière
ligne sur une nouveau enregistrement.

Lorsque utilisé comme sous-formulaire il n'y a que DEUX évènements "Sur
entrée et Sur sortie" et cela n'a aucun effet sur la position du curseur.
Private Sub FRL_SF_Cot_Enter()
DoCmd.GoToRecord , , acNewRec
End Sub

Par ailleurs j'ai trouvé sur le même site
http://access.developpez.com/faq/?page=PositionForm
Private Sub FRL_SF_Cot_Enter()
Me.FRL_SF_Cot.SetFocus
DoCmd.RunCommand acCmdRecordsGoToNew
End Sub

Lorsque je clique sur l'ascenseur du sous-formulaire ceci me place sur la
dernière ligne "(Nouv.")
Si je modifie la commande à LAST "DoCmd.RunCommand acCmdRecordsGoToLAST")
ceci place le curseur sur le dernier enregistrement.

C'est déjà une grande amélioration

Merci

Albert


Le 6/09/2012 4:09, Albert a écrit :
Bonjour

Base.MDB gérée avec Access 2007 ou 2010.
J'ai un formulaire et dessous un sous formulaire (relation père-fils) en
mode feuille de données qui affiche 5 lignes.
On ajoute continuellement des données dans le sous formulaire, et quand
il y a plus que cinq entrées il faut utiliser l'ascenceur pour aller à
la dernière ligne, cela devient vite fastidieux, surtout si la liste est
longue.
Est-il possible que le sous formulaire affiche les dernières données
entrées au lieu des premières ?

Vos suggestions sont bienvenues.
merci



Sur l'événement chargement (load)
DoCmd.GoToRecord , , acNewRec

Avatar
Albert
Bonjour Gloops

"Gloops" a écrit dans le message de
news:k29n2b$qvj$

Cette fois c'est Blaise qui a gagné
Voir ma réponse à Blaise.
Merci quand même
Albert


Albert a écrit, le 06/09/2012 04:09 :
Bonjour

Base.MDB gérée avec Access 2007 ou 2010.
J'ai un formulaire et dessous un sous formulaire (relation père-fils) en
mode feuille de données qui affiche 5 lignes.
On ajoute continuellement des données dans le sous formulaire, et quand
il y a plus que cinq entrées il faut utiliser l'ascenceur pour aller à
la dernière ligne, cela devient vite fastidieux, surtout si la liste est
longue.
Est-il possible que le sous formulaire affiche les dernières données
entrées au lieu des premières ?

Vos suggestions sont bienvenues.
merci





Bonjour,

Voir la requête sur laquelle est basée le sous-formulaire, plus
particulièrement sa clause ORDER BY.
Avatar
Albert
Bonjour

La Macro
Private Sub FRL_SF_Cot_Enter()
Me.FRL_SF_Cot.SetFocus
DoCmd.RunCommand acCmdRecordsGoToNew
End Sub
Permet d'afficher les dernières lignes du sous-formulaire mais seulement
après avoir cliqué sur le bas de l'ascenseur du sous-formulaire.
Y a-t'il moyen d'améliorer, pour que le sous-formulaire affiche les
dernières lignes aussitôt que le formulaire principal affiche un autre
enregistrement, sans nécessité de re-cliquer sur le sous-formulaire ?

Merci encore pour vos suggestions.

Albert

"Albert" a écrit dans le message de
news:k2ai00$q25$
Bonjour Blaise
"Blaise" a écrit dans le message de
news:k29n9n$j6c$

Vous avez bien saisie l'idée de ma demande.
Quand j'ouvre le formulaire seul, créé pour utiliser comme sous
formulaire, en mode feuille de données avec l'ajout de "DoCmd.GoToRecord ,
, acNewRec" placé sur l'évènement "Sur OUVERTURE" ouvre le formulaire à la
dernière ligne sur une nouveau enregistrement.

Lorsque utilisé comme sous-formulaire il n'y a que DEUX évènements "Sur
entrée et Sur sortie" et cela n'a aucun effet sur la position du curseur.
Private Sub FRL_SF_Cot_Enter()
DoCmd.GoToRecord , , acNewRec
End Sub

Par ailleurs j'ai trouvé sur le même site
http://access.developpez.com/faq/?page=PositionForm
Private Sub FRL_SF_Cot_Enter()
Me.FRL_SF_Cot.SetFocus
DoCmd.RunCommand acCmdRecordsGoToNew
End Sub

Lorsque je clique sur l'ascenseur du sous-formulaire ceci me place sur la
dernière ligne "(Nouv.")
Si je modifie la commande à LAST "DoCmd.RunCommand acCmdRecordsGoToLAST")
ceci place le curseur sur le dernier enregistrement.

C'est déjà une grande amélioration

Merci

Albert


Le 6/09/2012 4:09, Albert a écrit :
Bonjour

Base.MDB gérée avec Access 2007 ou 2010.
J'ai un formulaire et dessous un sous formulaire (relation père-fils) en
mode feuille de données qui affiche 5 lignes.
On ajoute continuellement des données dans le sous formulaire, et quand
il y a plus que cinq entrées il faut utiliser l'ascenceur pour aller à
la dernière ligne, cela devient vite fastidieux, surtout si la liste est
longue.
Est-il possible que le sous formulaire affiche les dernières données
entrées au lieu des premières ?

Vos suggestions sont bienvenues.
merci



Sur l'événement chargement (load)
DoCmd.GoToRecord , , acNewRec




Avatar
Gloops
Bonjour,

Ah oui, sur le Form_Current du formulaire principal ?

Il y a deux moyens. Si le code indiqué donne satisfaction, on peut le
mettre dans le Form_Current du formulaire principal. Attention que si on
a écrit un code dans le sous-formulaire, si on veut l'appeler du
formulaire principal, il faut penser à déclarer ce code comme Public, et
non Private. Mais là il semble que ça ne soit pas le cas.

Sinon il y a un code qui peut paraître plus sophistiqué, mais qui est
assez classique, c'est déclarer un Recordsetclone sur le jeu
d'enregistrements du sous-formulaire, déplacer son curseur vers la fin,
et reporter son signet vers le jeu d'enregistrements du sous-formulaire.
C'est ce qu'on utilise surtout pour une recherche en fait, en mettant
FindFirst à la place de MoveLast. (Attention pour la recherche : si le
formulaire est ouvert sur une table, ce n'est pas FindFiset mais Seek
-plus rapide mais nécessite un index.)

L'avantage de la deuxième technique est qu'elle ne nécessite pas de
mettre le focus sur le sous-formulaire. Parfois ça peut se ressentir su r
les temps de traitement.

Sans filet car je n'ai pas de quoi tester :

Dim Rs As Recordset
Set Rs = Controls("FR1_SF").Form.Recordsetclone
Rs.MoveLast
Controls("FR1_SF").Form.Bookmark = Rs.Bookmark
Rs.Close
Set Rs = Nothing



_____________________________________
Albert a écrit, le 07/09/2012 15:59 :
Bonjour

La Macro
Private Sub FRL_SF_Cot_Enter()
Me.FRL_SF_Cot.SetFocus
DoCmd.RunCommand acCmdRecordsGoToNew
End Sub
Permet d'afficher les dernières lignes du sous-formulaire mais seulem ent
après avoir cliqué sur le bas de l'ascenseur du sous-formulaire.
Y a-t'il moyen d'améliorer, pour que le sous-formulaire affiche les
dernières lignes aussitôt que le formulaire principal affiche un au tre
enregistrement, sans nécessité de re-cliquer sur le sous-formulaire ?

Merci encore pour vos suggestions.

Albert
Avatar
Gloops
Gloops a écrit, le 08/09/2012 11:55 :
Controls("FR1_SF").Form.Bookmark = Rs.Bookmark



Si je continue je vais avoir droit à une blague sur l'aspirine ...

Il me semble qu'on pourrait faire tout simplement, dans le Form_Current :
Controls("FR1_SF").Form.Recordset.MoveLast



Et d'ailleurs il y a une erreur sur la ligne citée ci-dessus, il fallai t
lire :

Controls("FR1_SF").Form.Recordset.Bookmark = Rs.Bookmark
Avatar
Albert
Bonjour Gloops
"Gloops" a écrit dans le message de
news:k2f4ma$a7r$

J'ai créé et ajouté la table "TBLCotisations" le printemps dernier, et on a
entré les données des deux denières années, et pour quelques membres on a
inclus jusqu'à 10 ans, pour tester.
La majorité des 400 membres ont déjà cotisé, la période de ré-inscription se
termine à la fin du mois, il ne restera qu'à ajouter les nouveaux. C'est
en inscrivant la cotisation des membres anciens que nous avons remarqué
qu'il fallait utiliser l'ascenseur, le sous-formulaire n'affiche que 5
lignes, ce ne fut pas un problème cette année, mais ce le sera dans le
futur.
Donc, il n'y a aucune urgence, on peut prendre notre temps.
J'ai ma grosse bible ACCESS 2007 de Hervé Inisan que je peux consulter
--------------------------
J'ai essayé ce qui suit avec le nom du SF ("FRL_SF_Cot") mais sans
résultat.

Dim Rs As Recordset
Set Rs = Controls("FR1_SF").Form.Recordsetclone
Rs.MoveLast
Controls("FR1_SF").Form.Bookmark = Rs.Bookmark
Rs.Close
Set Rs = Nothing
--------------------------------

Je reviendrai avec les résultats d'autres essais.

Cela fait beaucoup de choses a essayer

Merci


--
albertri-at-videotron.ca.invalid
Avatar
Gloops
Albert a écrit, le 08/09/2012 18:24 :
Donc, il n'y a aucune urgence, on peut prendre notre temps.



Ah bon donc au pire je finirai bien par avoir une machine avec Access ...


J'ai ma grosse bible ACCESS 2007 de Hervé Inisan que je peux consulte r
--------------------------
J'ai essayé ce qui suit avec le nom du SF ("FRL_SF_Cot") mais sans
résultat.

Dim Rs As Recordset
Set Rs = Controls("FR1_SF").Form.Recordsetclone
Rs.MoveLast
Controls("FR1_SF").Form.Bookmark = Rs.Bookmark
Rs.Close
Set Rs = Nothing
--------------------------------




Ah, on dirait que c'était gonflé de citer ça de mémoire ...
J'avoue que je ne vois pas où est l'erreur.
Après Rs.MoveLast, que donne ceci (à regarder dans la fenêtre d'exé cution) ?

Debug.Print Rs.Recordcount



Je reviendrai avec les résultats d'autres essais.



J'attends ça avec intérêt.



Cela fait beaucoup de choses a essayer




Oui, j'imagine très bien. J'aurais bien testé ce que j'ai proposé, mais
je n'ai pas Access sous la main ...
Avatar
Albert
Bonjour
"Gloops" a écrit dans le message de
news:k2g7id$its$

Pour le recordset mentionné ci-bas, est-ce qu'il ne faut pas avoir ADO
connecté ???
Ce n'est pas le cas dans ma base, Je ne connais rien à ADO. Dans Outils
Référence j'ai coché MSOffice 14.Access etc....
Je regarde ma bible, est-ce qu'il faut mettre les commandes ADO dans le
même module que les fonctions évènementielles du formulaire ?
Même dans la bible cela n'est pas très clair.
Albert

Albert a écrit, le 08/09/2012 18:24 :
Donc, il n'y a aucune urgence, on peut prendre notre temps.


Ah bon donc au pire je finirai bien par avoir une machine avec Access ...
J'ai ma grosse bible ACCESS 2007 de Hervé Inisan que je peux consulter
--------------------------
J'ai essayé ce qui suit avec le nom du SF ("FRL_SF_Cot") mais sans
résultat.

Dim Rs As Recordset
Set Rs = Controls("FR1_SF").Form.Recordsetclone
Rs.MoveLast
Controls("FR1_SF").Form.Bookmark = Rs.Bookmark
Rs.Close
Set Rs = Nothing
--------------------------------




Ah, on dirait que c'était gonflé de citer ça de mémoire ...
J'avoue que je ne vois pas où est l'erreur.
Après Rs.MoveLast, que donne ceci (à regarder dans la fenêtre d'exécution) ?

Debug.Print Rs.Recordcount



Je reviendrai avec les résultats d'autres essais.



J'attends ça avec intérêt.



Cela fait beaucoup de choses a essayer




Oui, j'imagine très bien. J'aurais bien testé ce que j'ai proposé, mais
je n'ai pas Access sous la main ...
1 2 3