Sauvegarder l'enregistrement

Sur un formulaire, je souhaiterais créer un bouton qui puisse valider les données (sauvegarder l’enregistrement)….

Solution manuelle

Vous savez sans doute que pour forcer un enregistrement manuel de la saisie en cours, vous pouvez :

  • Appuyer sur la combinaison de touche Majuscule + Entrée.
  • Sur Access 97 à 2003 : utiliser le menu Enregistrements / Sauvegarder l’enregistrement.
  • Sur Access 2007 : activer l’onglet Accueil du ruban, puis cliquer sur le bouton Enregistrer.

La technique s’applique à tous les objets d’Access où vous pouvez faire de la saisie : tables, requêtes, formulaires.

Solution VBA

Si vous souhaitez automatiser l’opération à l’aide d’un bouton (ça ne peut donc se faire que sur un formulaire) :

  1. Ouvrez votre formulaire en mode Création.
  2. Placez un bouton de commande sur ce formulaire, et faites apparaître ses propriétés.
  3. Dans l’événement Sur clic (Click), tapez le code suivant :

Conseil
Lorsque vous lancez l’impression d’un état par DoCmd.OpenReport, pensez à placer un DoCmd.RunCommand acCmdSaveRecord avant. De cette manière, vous êtes sûr que les données imprimées sur l’état sont à jour.

Vous aimerez aussi...

16 réponses

  1. DEVILLERS dit :

    Bonjour,

    Ce code pose problème, si l’on insère le code pour contourner le message d’erreur 3022.
    Cordialement.

  2. CLEMMERSSEUNE dit :

    Bonjour,
    Gestion d’une bibliothèque de livres : 2 tables : « Titres » et « Prêts » un formulaire qui contient un zone de liste déroulante (4 colonnes) pour afficher 1) le titre 2) auteur 3) genre 4 )biblio par l’intermédiaire de Column(2) Column(3) et Column(4)
    Tout s’affiche dans ma ligne de formulaire, mais, dans la table Prêts je ne retrouve que le titre ?? que faire dans ce cas ?? Merci

    • Hervé Inisan dit :

      A priori c’est normal, et c’est même plutôt bon signe : dans une base de données, tu sépares les informations dans différentes tables de façon à éviter les doublons. Il n’y a pas d’intérêt à copier le titre dans la table des prêts (ça ferait doublon justement).

      Par contre, si tu as besoin ultérieurement des infos Prêts et Livres, tu peux faire une requête qui reprend les 2 tables et te servir de cette requête comme base de travail.

  3. Hervé Inisan dit :

    danbo > Normalement, la fonction ShellExec() fournie sur le site devrait faire l’affaire. Elle ne va pas nécessairement démarrer le MediaPlayer, mais plutôt le logiciel affecté par défaut à la gestion des vidéos (ce qui est mieux, puisqu’on s’adapte à la configuration de l’utilisateur).

    Par exemple, cette ligne démarre MediaPlayer (mon lecteur par défaut, sur ma machine, et joue la vidéo automatiquement :

  4. danbo dit :

    Site sympa, merci !
    J’y viens souvent.

    A propos d’Access, développant une petite base pour une entrerpise manufacturière, je souhaite lancer des minis videos techniques à partir d’ACCESS.
    Or, avec le ShellExecute, comment informer ACCESS de lancer l’exe de Media Player, par exemple, tout en lui indiquent le nom de la video ?
    La technique n’est pas courante à priori, et de plus, l’import OLE m’est impossible et refusé quoique je fasse.

    Espérant être au bon endroit (dossier formulaire ACCESS)

    Merci.
    Danbo

  5. Hervé Inisan dit :

    yann > J’imagine que l’erreur se produit sur le CancelEvent ?

  6. yann dit :

    Hello,
    Lorsque j’appuie sur le bouton suivant correspondant au code cidessous,

    Private Sub Commande121_Click()
    If MsgBox(« Souhaitez-vous sauvegarder? », vbQuestion + vbYesNo + vbDefaultButton2, « Sauvegarde ») = vbYes Then
    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.RunMacro « Clients »
    Else
    DoCmd.CancelEvent
    End If
    End Sub

    j’ai le message d’erreur suivant :

    La commande ou l’action sauvegarde maintenant n’est pas disponible pour le moment.

    Pouvez vous m’aider?

    Merci de votre aide

  7. Hervé Inisan dit :

    Seref >

    • Tu as créé le bouton par l’Assistant ?
    • Quelle est ta version d’Access ?
    • Et dans quel contexte est-ce que tu utilises le bouton ?
  8. SEREF dit :

    Bonjour,
    comment se fait-il que sur un formulaire le bouton dupliquer un enregistrement ne fonctionne plus ?
    En effet, lorsque je clique dessus il ouvre un nouvel enregistrement alors que jusque là il dupliquait ?
    Merci de votre aide.

  9. Hervé Inisan dit :

    Jean De Dieu > Quelque chose comme Me.Dirty = False devrait suffire (je n’ai pas d’Access sous la main, aujourd’hui, pour vérifier).

  10. JEAN DE DIEU dit :

    Salut , j’aimerais savoir comment ecrire un code VBA pour annuler un enregistrement .

    MERCI

  11. Hervé Inisan dit :

    chrisu > Pas de problème, c’est fait pour ça !

  12. chrisu dit :

    Après des tas de tâtonnements et grâce au site j’ai enfin compris mon erreur. Le chemin est encore long pour moi.. et je jongle entre français et anglais.
    Merci pour votre aide.

  13. chrisu dit :

    J’ai utilisé cette commande mais je reçois un message d’erreur:
    Microsoft Office Access can’t find the object ‘DoCmd’

  14. Hervé Inisan dit :

    chrisu > Est-ce que l’instruction est tapée au bon endroit ? Notamment : elle ne doit pas être tapée dans la fenêtre de propriétés, mais dans le code qui est « derrière ».

    Je m’explique :

    1. Faire apparaître les propriétés du bouton (ou de l’objet en général).
    2. Cliquer sur l’onglet Evénement.
    3. Dans l’événement « Sur clic« , choisir « Procédure événementielle« .
    4. Cliquer sur les points de suspension à droite.

    Là, on obtient un bloc de cette forme :

    C’est entre ces 2 lignes qu’il faut taper le code VBA.

Laisser un commentaire

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