Les mémos

Fermer Tables

Fermer Requêtes

Fermer Formulaires

Fermer Etats

Fermer Modules

Fermer Base

Fermer Automation

Fermer Administration

Fermer Registre

Fermer String

Fermer Email CDO

Fermer Outlook

Fermer Net

Fermer Dates - Heures

Fermer Fichiers

Fermer Références

Fermer Vrac

Je débute...

Fermer La normalisation

Fermer VBA

Attention
Aucun support
par émail !

Utilisez le forum pour les questions/réponses concernant MsAccess et les codes que vous trouverez sur ce site.
Visites

   visiteurs

   visiteurs en ligne

Formulaires - 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




Date de création : 20/04/2007 : 16:54
Dernière modification : 22/04/2007 : 17:44
Catégorie : Formulaires
Page lue 5874 fois


Imprimer l'article Imprimer l'article

Recherche



Lettre d'information
Pour avoir des nouvelles de ce site, inscrivez-vous à notre Newsletter.
Captcha
Recopier le code :
Au sujet de l'auteur
L'auteur qui fréquente (fréquentait) le forum microsoft.public.fr.access a eu le plaisir d'être nommé MVP Office-Access de janvier 2003 à décembre 2011.

Qui sont les MVP ?

Divers ;-)
Nous contacter

Haut