Bonjour à tous

L'idée est de faire "monter" ou "descendre" une ligne d'un enregistrement dans un formulaire continu sur le click d'un bouton.

Voici ce à quoi j'avais pensé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
Private Sub btn_LineUp_Click()
On Error GoTo Err_Btn_LineUp
 
    Dim i As Integer
    Dim IdEnCours As Long
    Dim Rs As DAO.Recordset
 
    Set Rs = CurrentDb.OpenRecordset("SELECT * FROM T_ProtocoleVVC WHERE ID_Protocole =" & Me.ID_Protocole, dbOpenDynaset)
    Rs.FindFirst "ID_ProtocoleVVC =" & Me.ID_ProtocoleVVC
 
    'Si c'est le premier enregistrement on ne peut pas faire monter toute la ligne
     If Rs.AbsolutePosition = 1 Then
    MsgBox "Vous ne pouvez pas déplacer cette ligne vers le haut"
    Exit Sub
    Else
        For i = 2 To Rs.Fields.Count
        Dim Temp(i), ActStr(i) As String
            'Mémorise la valeur du champ correspondant de l'enregistrement en cours
            ActStr(i) = Nz(DLookup(Rs.Fields(i).Name, "T_ProtocoleVVC", Rs("ID_ProtocoleVVC") = Me.ID_ProtocoleVVC), "")
            Rs.MovePrevious
            'Mémorise la valeur de l'enregistrement précédent
            Temp(i) = Nz(DLookup(Rs.Fields(i).Name, "T_ProtocoleVVC", Rs("ID_ProtocoleVVC") = Me.ID_ProtocoleVVC), "")
 
            'Mise à jour de l'enregistrement précédent avec la valeur correspondante en cours
                .Update Rs.Fields(i), ActStr(i)
            'Mise à jour de l'enregistrement en cours avec la valeur précédente mémorisée
            Rs.MoveNext
                .Update Rs.Fields(i), Temp(i)
        Next i
            DoCmd.RunCommand acCmdSaveRecord
            Me.Form.Requery
    End If
 
    Rs.Close
    Set Rs = Nothing
End Sub
Je mémorise la valeur d'un champ de l'enregistrement en cours puis du précédent et je colle la valeur du champ en cours en lieu et place du précédent et vice versa. Puis la boucle passe au champ suivant et ainsi de suite.
La syntaxe Temp(i) ne fonctionne pas. Comment faire varier cette déclaration de variable qui m'éviter de passer en revue les champs de la table.
Merci d'avance pour votre aide qui me fera gagner un temps précieux, ma recherche du jour sur le sujet ne m'ayant pas permis de trouver de réponse.
Je suis aussi preneur d'une autre stratégie.