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

Garder sa position dans une liste

4 réponses
Avatar
Db
Bonjour,
j'utilise un sous formulaire en feuille de données.
Lorsque je fais un choix a l'aide d'une combo sur un enregistrement, cette
enregistrement disparait car ma requête impose de ne garder que les
enregistrements non selectionnés. Mais le problême, c'est qu'à chaque
requery pour supprimé de la liste l'enregistrement que je viens de
selectionner, il me repositionne à chaque fois au début de ma liste.
Y à t_il un moyen de connaitre sa position dans cette feuille de donnée, et
comment se repositionné à l'enregistrement suivant celui qui à été supprimé
?

Pas simple à expliquer
Merci par avance.

Dbl

4 réponses

Avatar
Raymond [mvp]
Bonsoir.

tu peux utiliser un recordset basé sur ton formulaire et agir sur les
événement de suppression:

Dim Pos As Long
Dim Rs As DAO.Recordset

Private Sub Form_AfterDelConfirm(Status As Integer)
Me.Requery
Rs.Move Pos
End Sub

Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)
Set Rs = Me.Recordset
Pos = Me.CurrentRecord
End Sub


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Db" a écrit dans le message de
news:410e6478$0$314$
Bonjour,
j'utilise un sous formulaire en feuille de données.
Lorsque je fais un choix a l'aide d'une combo sur un enregistrement, cette
enregistrement disparait car ma requête impose de ne garder que les
enregistrements non selectionnés. Mais le problême, c'est qu'à chaque
requery pour supprimé de la liste l'enregistrement que je viens de
selectionner, il me repositionne à chaque fois au début de ma liste.
Y à t_il un moyen de connaitre sa position dans cette feuille de donnée,
et

comment se repositionné à l'enregistrement suivant celui qui à été
supprimé

?

Pas simple à expliquer
Merci par avance.

Dbl




Avatar
Db
Quand je disait supprimer, c'était plutôt, ne plus faire
apparaître(l'enregistrement existe toujours mais n'a plus les critères lui
permettant d'apparaître sur la liste).
En fait , c'est comme un marché.
Je choisi des articles que je veut retrouver dans un autre formulaire.
A chaque fois que je les sélectionne ils disparaissent de la liste en cours.
Au fur et à mesure de mes choix, le sélecteur devrait rester au choix
suivant et pas tout au début.
Pas simple.
Merci encore.
dbl

"Raymond [mvp]" a écrit dans le message de
news:
Bonsoir.

tu peux utiliser un recordset basé sur ton formulaire et agir sur les
événement de suppression:

Dim Pos As Long
Dim Rs As DAO.Recordset

Private Sub Form_AfterDelConfirm(Status As Integer)
Me.Requery
Rs.Move Pos
End Sub

Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)
Set Rs = Me.Recordset
Pos = Me.CurrentRecord
End Sub


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Db" a écrit dans le message de
news:410e6478$0$314$
Bonjour,
j'utilise un sous formulaire en feuille de données.
Lorsque je fais un choix a l'aide d'une combo sur un enregistrement,
cette


enregistrement disparait car ma requête impose de ne garder que les
enregistrements non selectionnés. Mais le problême, c'est qu'à chaque
requery pour supprimé de la liste l'enregistrement que je viens de
selectionner, il me repositionne à chaque fois au début de ma liste.
Y à t_il un moyen de connaitre sa position dans cette feuille de donnée,
et

comment se repositionné à l'enregistrement suivant celui qui à été
supprimé

?

Pas simple à expliquer
Merci par avance.

Dbl








Avatar
Raymond [mvp]
Qu'à cela ne tienne, ça change les événements mais pas les fonctions que tu
peux utiliser.

Set Rs = Me.Recordset
Pos = Me.CurrentRecord
' ici ta procédure
Me.Requery
Rs.Move Pos
End Sub

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Db" a écrit dans le message de
news:410e9026$0$306$
Quand je disait supprimer, c'était plutôt, ne plus faire
apparaître(l'enregistrement existe toujours mais n'a plus les critères lui
permettant d'apparaître sur la liste).
En fait , c'est comme un marché.
Je choisi des articles que je veut retrouver dans un autre formulaire.
A chaque fois que je les sélectionne ils disparaissent de la liste en
cours.

Au fur et à mesure de mes choix, le sélecteur devrait rester au choix
suivant et pas tout au début.
Pas simple.
Merci encore.
dbl


Avatar
Raymond [mvp]
Bonjour.

vu que tu es sur un sous-formulaire, tu peux faire aussi, sur l'événement
click, je pense, ou afterupdate:
Private Sub Lechamp_AfterUpdate() ' par exemple
Dim Bk As Variant
Bk = Me.Bookmark
Me.Requery
Me.Bookmark = Bk
End Sub
Lechamp est un contrôle sur une ligne du sous-formulaire.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Db" a écrit dans le message de
news:410f21db$0$309$
J'ai en effet compris la manip, elle est judicieuse, mais malheureusement,
la méthode Move échoue.
Après le Requery, l'enregistrement passe à 1 et ne veut pas passé à 193
(pour l'exemple).
Le "focus" reste sur la combo de la première ligne et la méthode Move ne
change rien...
De plus, dans l'After Update de ma combo de mon formulaire(affichage en
feuille de données), il n'y a pas Me.Recordset, mais Me.RecordsetClone.
Est-ce un problème?
Aie Aie Aie
Désolé.
Dbl