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

Delete enregistrement(s)

3 réponses
Avatar
Guy du Lac
Bonjour à tous,

Est-il possible par code vba de supprimer les (Var_nombre_supprime) derniers
enregistrements d'une table.

Var_nombre_supprime = 5, alors je supprime les 5 derniers enregistrements

--
Merci,
Guy du Lac

3 réponses

Avatar
pgz
Bonjour.

Qu'entends-tu par les n dernières?
Il n'y a aucun ordre dans une table. Seule importe la règle de tri quand on
l'affiche.

Il faut donc trouver un critère. Par exemple, si tu utilises un NumAuto :
les n plus grands.

Bon courage,
--
pgz

"Ce qui se conçoit mal s'exprime obscurément et les mots pour le dire
arrivent péniblement." - dicomoche.net
_____________________________
pgz.conseil at orange.fr



Bonjour à tous,

Est-il possible par code vba de supprimer les (Var_nombre_supprime) derniers
enregistrements d'une table.

Var_nombre_supprime = 5, alors je supprime les 5 derniers enregistrements

--
Merci,
Guy du Lac


Avatar
JLCan
Bonjour guy,
J'ai fait ce bout de code pour illustrer une solution à ton problème:

Public Const VarNombreSupprime = 3

Public Sub Efface()

Dim dbObj As Database
Dim rsObj As Recordset

Dim I As Long

Set dbObj = CurrentDb()
Set rsObj = dbObj.OpenRecordset("Bidons")
With rsObj
.MoveLast ' Pour se positionner à la fin des
enregistrement
For I = 1 To VarNombreSupprime
.Delete ' Pour marquer l'enregistrement comme
'delete'
.MovePrevious ' Attention l'enregistrement 'effacé' existe
toujours
Next I
End With

End Sub

C'est du Access 97 mais ça va fonctionner sur toutes les versions ( là je
suis optimiste!!!).

Bonne chance.

--
JLCan



Bonjour à tous,

Est-il possible par code vba de supprimer les (Var_nombre_supprime) derniers
enregistrements d'une table.

Var_nombre_supprime = 5, alors je supprime les 5 derniers enregistrements

--
Merci,
Guy du Lac


Avatar
Raymond [mvp]
Bonjour Guy.

Il faut partir du principe qu'une table n'est qu'un container de stockage en
vrac et que tu peux afficher/gérer ce stock à l'aide d'un recordset en
définissant l'ordre dans lequel tu présentes les enregistrements.
Si tu n'indiques pas d'ordre de tri, la présentation peut être complètement
aléatoire s'il n'y a jamais eu de tri réalisé directement sur la table. Même
si un tri par défaut est indiqué dans la table, vba peut présenter les
données dans son ordre préférentiel personnel. il n'y a qu'un seul moment
très rare où tu peux afficher les enregistrements dans leur ordre de saisie,
c'est lorsque la table est vierge, qu'elle est remplie et qu'aucun
enregistrement n'est modifié.
Donc pour être sûr que tes enregistrements pourront être traités dans leur
ordre de saisie, il faut placer un index autonum(clé primaire ou non) et
lire la table selon les valeur de cet index.
donc pour supprimer les 5 derniers enregistrements de la table table1 tu
peux faire directement,

DELETE * FROM (SELECT TOP 5 Table1.* FROM Table1 ORDER BY Table1.[no] DESC)
AS MaRequete;

que tu peux lancer par le code vba directement. si tu es fana du vba tu peux
aussi passer par un recordset avec la clause select ci-dessus mais c'est
beaucoup plus long à écrire.
--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/

Partagez vos créations réalisées sous Office 2007 et gagnez peut-être 5000?
http://www.comscamp.com/Tracker/Redirect.ashx?linkid"7641a0-797c-44d5-8774-d820448dbe90


"Guy du Lac" a écrit dans le message de
news:
| Bonjour à tous,
|
| Est-il possible par code vba de supprimer les (Var_nombre_supprime)
derniers
| enregistrements d'une table.
|
| Var_nombre_supprime = 5, alors je supprime les 5 derniers enregistrements
|
| --
| Merci,
| Guy du Lac