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

Navigation trop longue entre les enregistrements

22 réponses
Avatar
clario
Bonjour,
mon probl=E8me est le suivant : j'ai plus de 3000 enregistrements dans
ma base de donn=E9es et donc il devient tr=E8s long de naviguer entre les
enregistrements dans mon formulaire. Pour l'instant je navigue avec les
fl=E8ches qui font aller =E0 l'enregistrement suivant ou pr=E9c=E9dent ou
avec la molette de la souris. J'ai pens=E9 =E0 une solution qui pourrait
=EAtre une barre de navigation en plus de mon syst=E8me de fl=E8ches
(comme les barres de d=E9filement : pour aller plus vite) mais je ne
sais pas comment faire ceci.
Si quelqu'un a d'autres id=E9es elles osnt les bienvenues

Merci pour votre aide

10 réponses

1 2 3
Avatar
Eric
Bonjour,

Tu peux mettre en pied de formulaire une Microsoft Forms 2.0 ScrollBar
(ou Microsoft Flat ScrollBar). Soit Ascenseur son nom.

Sur Ouverture:
Private Sub Form_Open(Cancel As Integer)
Ascenseur.Min = 1
Ascenseur.Max = Me.RecordsetClone.RecordCount
End Sub

Sur chargement du formulaire:
Private Sub Form_Load()
Ascenseur.LargeChange = 100 ' à adapter
Ascenseur.SmallChange = 20 ' à adapter
End Sub

Sur Activation du formulaire:
Private Sub Form_Current()
' Positionnement sur la barre avec boutons du form
Me.Ascenseur.Value = Me.CurrentRecord
End Sub

Sur Changement de la scrollbar Ascenseur:
Private Sub Ascenseur_Change()
DoCmd.GoToRecord , , acGoTo, Ascenseur.Value
End Sub

Bonjour,
mon problème est le suivant : j'ai plus de 3000 enregistrements dans
ma base de données et donc il devient très long de naviguer entre les
enregistrements dans mon formulaire. Pour l'instant je navigue avec les
flèches qui font aller à l'enregistrement suivant ou précédent ou
avec la molette de la souris. J'ai pensé à une solution qui pourrait
être une barre de navigation en plus de mon système de flèches
(comme les barres de défilement : pour aller plus vite) mais je ne
sais pas comment faire ceci.
Si quelqu'un a d'autres idées elles osnt les bienvenues

Merci pour votre aide



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
clario
c'est cool c'est que je veux, seulement DoCmd.GoToRecord , , acGoTo,
Ascenseur.Value ne marche pas :s
Avatar
Eric
re,

Une petite remarque:
Pour atteindre un enregistrement dans le jeu, tapez une valeur dans la
zone à cet effet (celle qui affiche le rang de l'enregistrement dans le
jeu entre les boutons de navigation) et validez.
Par exemple à l'ouverture du formulaire, entre les boutons de navigation
(1er, dernier, suivant...) s'affiche 1. Si tu saisis 180 et valides tu
seras sur le 180ème. Donc accès rapide à une position puis après soit la
scrollbar (ascenseur) soit les boutons de navigation

--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
clario
en fait comment on lie la scrollbar aux données ?

ça c'est bon : DoCmd.GoToRecord , , acGoTo
Merci beaucoup !!
Avatar
Eric
re,

La scrollbar a pour valeur Minimale 1 et pour Max le nombre
d'enregistrements du Recordset voir la procédure Open du formulaire.
Cette barre retourne une valeur comprise entre 1 et le max défni comme
ci-dessus. Sur l'évènement Change de la ScrollBar, tu as mis :
DoCmd.GoToRecord , , acGoTo, Ascenseur.Value
ce qui impose à Acces d'atteindre l'enregistrement se trouvant à la
position donnée par la barre Ascenseur

La procédure sur l'évènement Activation (Current) du formulaire a pour
but de synchroniser la scrollbar si tu manipules les boutons de
navigation (notament 1er et Dernier repositionnent la scrollbar au début
ou à la fin).

En fait la scrollbar ne donne qu'une valeur qui correspond à un certain
rang d'un enregistrement dans le jeu que la commande GotoRecord atteint.

Est-ce clair ?


en fait comment on lie la scrollbar aux données ?

ça c'est bon : DoCmd.GoToRecord , , acGoTo
Merci beaucoup !!



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
clario
oui c'est beaucoup plus clair merci
comment faire pour ne pas avoir de message d'erreur quand on va trop
loin ?
Avatar
Eric
re,

je suppose que tu as le message quand tu es allé au bout du jeu et que
tu appuies sur le bouton de navigation Suivant.
Modifies comme suit la procédure :
Private Sub Form_Current()
If Me.CurrentRecord <= Me.Ascenseur.Value Then
Me.Ascenseur.Value = Me.CurrentRecord
End If
End Sub

Si ce n'est pas ce cas, précises quand ca survient.

oui c'est beaucoup plus clair merci
comment faire pour ne pas avoir de message d'erreur quand on va trop
loin ?



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
clario
merci pr laide c'est bon
Avatar
Eric
Ooops !!!
Erreur. Remplaces :
If Me.CurrentRecord <= Me.Ascenseur.Value Then
par
If Me.CurrentRecord <= Me.Ascenseur.Max Then

re,

je suppose que tu as le message quand tu es allé au bout du jeu et que
tu appuies sur le bouton de navigation Suivant.
Modifies comme suit la procédure :
Private Sub Form_Current()
If Me.CurrentRecord <= Me.Ascenseur.Value Then
Me.Ascenseur.Value = Me.CurrentRecord
End If
End Sub



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
clario
merci beaucoup ton code est exactement ce que je cherchais à faire !!!
1 2 3