Pré-remplir un nouvel enregistrement

Publié le par Raymond

Vous avez toujours désiré que vos nouveaux enregistrements de formulaires soient pré-remplis avec les valeurs du dernier enregistrement saisi, mais sans écrire une seule ligne de code. C’est possible et très simplement.

Comment indiquer les contrôles à remplir ?
Chaque contrôle de type texte, combo, liste et case à cocher, peut être pré-rempli et vous devez indiquer le texte AutoFillNewRecord dans la propriété Remarque du contrôle. C’est tout.


Quelle procédure exécuter pour remplir les contrôles et dans quel événement ?
Une procédure unique dans l’événement Form_Current() pour tous les formulaires est utilisée. Placez la dans VB Editor par copier/coller de la procédure ci-dessous.


Private Sub Form_Current()
    AutoFillNewRecord Me
End Sub


Quelle procédure unique de remplissage utiliser ?
Créer un module et placer la procédure ci-dessous dans ce module. Si vous nommez le module, ne lui donnez pas le même nom que la procédure. Ce module sera utilisé par tous les formulaires de votre projet.


Public Sub AutoFillNewRecord(Frm As Form)
If Frm.NewRecord Then
    Dim Rs As DAO.Recordset
    Set Rs = Frm.RecordsetClone
    If Not Rs.EOF Then
        Rs.MoveLast
        Dim Ctl As Control
        For Each Ctl In Frm.Controls
            If Ctl.ControlType = acTextBox Or _
                Ctl.ControlType = acCheckBox Or _
                Ctl.ControlType = acComboBox Or _
                Ctl.ControlType = acListBox Then
                If Ctl.Tag = "AutoFillNewRecord" Then
                    Frm(Ctl.Name) = Rs(Ctl.Name)
                End If
            End If
        Next Ctl
        Set Ctl = Nothing
    End If
    Set Rs = Nothing
End If
End Sub 


Pourquoi le double contrôle type et remarque ?

La procédure de remplissage vérifie que le contrôle soit d'un type déterminé et que la remarque soit bonne. Ceci pour éviter qu'une remarque de remplissage soit marquée pour un bouton de commande par exemple et provoque une erreur d'exécution.

Publié dans Astuces

Commenter cet article