Aide - Recherche - Membres - Calendrier
Version complète : Est-ce Possible De Numéroter Les Lignes D'une Requête ?
Trucs et astuces Express > Discussions Informatique > Microsoft Office 2003 / 2007 > Access
Joh422
Bonjour,

Je veux simplement savoir si c'est possible de numéroter les lignes, lorsqu'on imprime une requête. Je sais qu'on peut le faire dans un état, mais est-ce possible dans une requête ?

Merci !
francishop
Bonjour,

C'est juste pour savoir si c'est possible : la réponse est oui.

Pour ceux que ça intéresse le comment:

A partir d'un formulaire :
CODE
Private Sub cmd_Exemple_Click()
Dim db As Database: Set db = CurrentDb
Dim r As Recordset: Set r = db.OpenRecordset("qry_Exemple") 'Ou la table directement.

Dim i As Long: i = 1

Do While Not r.EOF
   r.Edit
   r![Champ3] = i
   r.Update
   i = i + 1
   r.MoveNext
Loop

r.Close: Set r = Nothing
db.Close: Set db = Nothing

End Sub

La requête :
CODE
SELECT tbl_Exemple.ID, tbl_Exemple.ChampSubsi,
        tbl_Exemple.Champ3
FROM tbl_Exemple
ORDER BY tbl_Exemple.ID;

*******************************************************************
Ou alors la requête :
CODE
SELECT tbl_Exemple.ID, Compteur("tbl_Exemple","ID",[ID]) AS Compte
FROM tbl_Exemple
ORDER BY tbl_Exemple.ID;

Avec la fonction Compteur dans un module :
CODE
Public Function Compteur(strTable As String, strChamp As String, MaVar As Variant) As Long
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset(strTable, dbOpenDynaset)
If Not rs.EOF Then
rs.FindFirst ("[" & strChamp & "] = " & MaVar)
Compteur = rs.AbsolutePosition + 1
End If
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
End Function

*******************************************************************
Si on veut éviter VBA :
directement dans la requête :
CODE
SELECT tbl_Exemple.ID, (SELECT COUNT( [ID] )
  FROM tbl_Exemple AS T1
  WHERE ID <  tbl_Exemple.ID)+1 AS ClassementSurNum
FROM tbl_Exemple
ORDER BY tbl_Exemple.ID;

Ou alors sur du texte
CODE
SELECT tbl_Exemple.ID, tbl_Exemple.ChampSubsi, (SELECT COUNT(ChampSubsi)
FROM tbl_Exemple AS T1
WHERE ChampSubsi <  tbl_Exemple.ChampSubsi)+1 AS ClassementSurTxt
FROM tbl_Exemple
ORDER BY tbl_Exemple.ChampSubsi;

Cordialement.

michel_m
Bonjour Francis,

Merci pour ces démos très intéressantes (il y a pas mal de temps que je cherchais en vain comment faire ce numérotage)
C'est stocké dans mon grenier à astuces!!

Bon WE

Michel
Joh422
Bonjour Francis,

Merci pour la réponse, je vais essayer ça..

Au début j'allais souvent voir si j'avais une réponse unsure.gif , mais après quelques mois, j'ai cru que finalement ça ne se faisait pas!

Il semble que je n'était pas la seule à chercher une solution à ce problème.
Merci encore ! mai_chinese.gif

Johanne
Ceci une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquez ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.