Dupliquer le dernier enregistrement

Comment reprendre automatiquement certains champs du dernier enregistrement saisi ?

L’approche manuelle

Avant de lancer des usines Ă  gaz 😉 souvenez-vous, lorsque vous ĂȘtes sur un champ de saisie, que la combinaison de touches Ctrl + " (guillemets) reprend la valeur du mĂȘme champ, pour le dernier enregistrement saisi.

Ça fonctionne au niveau des tables, des requĂȘtes et des formulaires. Sur tous les Ă©crans oĂč vous pouvez faire de la saisie, en rĂ©sumĂ© !

L’approche automatique

On peut automatiser tout ça, pour les cas oĂč vous devez dupliquer plusieurs champs en une fois. Il y a plusieurs façons de faire, en voici une qui se veut rĂ©utilisable sur diffĂ©rents formulaires.

Commencez par recopier ce bloc de code dans un module standard de votre base de données :

Cette procédure reçoit 3 arguments, dont le dernier est facultatif :

  1. L’objet Formulaire concernĂ© par la duplication d’enregistrement.
  2. La liste des champs Ă  dupliquer. En effet, il n’est gĂ©nĂ©ralement pas nĂ©cessaire de dupliquer un enregistrement entier (ne serait-ce que la clef primaire). Et d’ailleurs, dupliquer un enregistrement entier est gĂ©nĂ©ralement une mauvaise pratique dans une base de donnĂ©es.
  3. Une valeur boolĂ©enne qui vaut True si on doit dupliquer le dernier enregistrement (c’est le cas par dĂ©faut) ou False s’il faut dupliquer le premier enregistrement de la table (au cas oĂč !).

Mise en place

Maintenant que le bloc Sub / End Sub est en place dans votre base, vous pouvez l’utiliser sur diffĂ©rents formulaires. Imaginez un formulaire avec des champs Nom, PrĂ©nom, Email, Adresse, Code postal, Ville, etc. Voici une application sur ce formulaire :

  1. CrĂ©ez un bouton sur ce formulaire, et donnez-lui un nom (dans mon cas : btnValeursPrecedentes ; oui, je sais, c’est long ! :)).
  2. Faites apparaĂźtre le code VBA de l’Ă©vĂ©nement Sur clic du bouton, et modifiez-le comme ci-dessous. Remplacez bien sĂ»r les noms de champs par vos champs rĂ©els, dans la variable avarChamps.

Passez en mode Formulaire, sur un enregistrement vide, cliquez sur le bouton, et dites « Ooooh ! » 🙂

Si vous souhaitez dupliquer les champs du premier enregistrement de table (au lieu du dernier par défaut), remplacez la ligne de copie par :

Note

Le code VBA suppose que votre formulaire est un formulaire dĂ©pendant (donc liĂ© Ă  une table ou requĂȘte), et que les champs du formulaire ont le mĂȘme nom que les champs de la table associĂ©e.

C’est le cas presque tout le temps, notamment si vous avez construit votre formulaire via l’Assistant Access.

Vous aimerez aussi...

6 réponses

  1. Vijinn dit :

    Bonjour.
    Dans la jungle des réponses à la recherche « Dupliquer un enregistrement », votre solution est relativement simple. Merci !
    Mais serait-il possible de l’adapter pour qu’elle duplique, non pas les valeurs du dernier enregistrement, mais celle de l’enregistrement en cours ? Et, cerise sur le gĂąteau, que avarChamps soit par dĂ©faut tous les champs de l’enregistrement ?

    Merci

  2. mouzouni dit :

    Bonjour HĂ©rve , Je vous remercie tout d’abord pour ce site.
    En faite , je voudrais dupliquer un enregistrement a partir de son ID , pas forcement le premier ou le dernier ? cela est-il possible ?
    Je vous remercie

    • HervĂ© Inisan dit :

      C’est possible effectivement (il faut par contre modifier sensiblement le code de l’article).
      Je vais prĂ©parer un nouvel article dĂšs que possible sur le sujet, ça a l’air de rĂ©pondre Ă  une demande rĂ©guliĂšre. 😉

  3. Hervé Inisan dit :

    sabsite > Quel est le scénario précis ?

  4. sabsite dit :

    Bonjours,
    Comment puis-je dupliquer un enregistrement dans un nouvel enregistrement
    Cordialement

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *