En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies pour vous proposer des contenus et services adaptés. Mentions légales.

Recherche

Recherche

Les mémos

Je débute...

Visites

 1223061 visiteurs

 6 visiteurs en ligne

Nous contacter

Contact

Tri manuel dans form


Si l'on souhaite trier les enregistrements d'un formulaire continu de manière manuelle, c. à d. sans que la source ne possède un champ qui se prête au tri désiré, il faut se rabattre sur un champ "numéro de ligne".

  • Ce formulaire en continu sera basé sur une requête dans laquelle le tri sera basé sur le champ "NumLigne".
  • Ce formulaire, s'il est sous-formulaire, pourra contenir une clé externe le liant au formulaire principal.
  • Le champ "NumLigne" peut ne pas être affiché dans le formulaire.
  • On placera dans la section détail un petit bouton flêche vers le haut (cmdUp) et un autre bouton flêche vers le bas (cmdDown).
  • Ne pas oublier d'activer la référence DAO !

Le code des boutons que l'on placera dans la Sub de l'événement "Sur Click" :

Private Sub cmdUP_Click()
    Dim AboveLineNumber As Long
    Dim CurrentLineNumber As Long
    Dim strField As String

    '//Adaptez le nom du champ contenant le numéro de ligne
    strField = "NumLigne"

    With Me.RecordsetClone
        .Bookmark = Me.Bookmark
        If CurrentRecord = 1 Then
            'on est sur le premier enregistrement
            Exit Sub
        Else
            CurrentLineNumber = .Fields(strField)
            .MovePrevious
            AboveLineNumber = .Fields(strField)
            .Edit
            .Fields(strField) = CurrentLineNumber
            .Update
            .MoveNext
            .Edit
            .Fields(strField) = AboveLineNumber
            .Update
        End If
        Me.Requery
    End With
End Sub

  

Private Sub cmdDown_Click()
    Dim BelowLineNumber As Long
    Dim CurrentLineNumber As Long
    Dim strField As String

    '//Adaptez le nom du champ contenant le numéro de ligne
    strField = "NumLigne"

    With Me.RecordsetClone
        .Bookmark = Me.Bookmark
        If CurrentRecord = .RecordCount Then
            'on est sur le dernier enregistrement
            Exit Sub
        Else
            CurrentLineNumber = .Fields(strField)
            .MoveNext
            BelowLineNumber = .Fields(strField)
            .Edit
            .Fields(strField) = CurrentLineNumber
            .Update
            .MovePrevious
            .Edit
            .Fields(strField) = BelowLineNumber
            .Update
        End If
        Me.Requery
    End With
End Sub


Catégorie : - Formulaires
Page lue 7797 fois

Vous êtes ici :   Accueil » Tri manuel dans form