Date de mise à jour

Comment mémoriser la date de denière modification d’un enregistrement dans une table ?

  1. Dans la table concernée, ajoutez un champ Date de dernière modification (ou tout autre nom !), de type Date/Heure. Enregistrez la table.
  2. Ouvrez maintenant le formulaire associé, en mode Création.
  3. Dans l’événement Avant mise à jour (BeforeUpdate), tapez le code suivant :
    Me![Date de dernière modification] = Date
  4. Le jour de la dernière modification sera ainsi stocké à chaque changement (du genre : 21/10/2008).
  5. Si vous souhaitez le jour et l’heure (du genre : 21/10/2008 9:35:07), écrivez plutôt :
    Me![Date de dernière modification] = Now

Vous aimerez aussi...

11 réponses

  1. MrPYB dit :

    Salut je travail sur access 2007, ou j’ai mis au points une base de gestion de produit chimique. J’ai fait un jolie formulaire avec un champs dernière mise à jour; Je rentre donc le code vga suivant :
    Private Sub Form_BeforeUpdate(Cancel As Integer)
    Me![Dernière mise à jour] = Date
    End Sub

    Mais ça ne fonctionne pas quand je fait une mise à jour de l’une de mes fiches produits. Ou est mon erreur?

    Merci d’avance

    • Hervé Inisan dit :

      A priori, le code a l’air correct. Est-ce que :
      1. La table associée au formulaire contient bien un champ appelé [Dernière mise à jour] (sans les crochets) ?
      2. Une erreur se produit à l’exécution ?
      3. Le code VBA est activé au démarrage (barre jaune sous le ruban, lors de l’ouverture de la base) ?

  2. Hervé Inisan dit :

    foobar > Est-ce que le code est tapé dans le bon événement « Avant MAJ » ? (cet événement existe pour le formulaire et pour les champs de saisie, notamment). Et dans le bloc VBA de l’événement (entre Sub et End Sub), pas dans la propriété du formulaire.

    Est-ce que la table contient un champ appelé Date de dernière modification ? (sinon, tu adaptes le code VBA en fonction du champ exact).

    Et sinon, quand ça ne marche pas : ça ne produit rien, ou Access affiche un message d’erreur ?

    Le « Me » ne doit pas être la source du problème (pour plus d’infos, voir cet article).

  3. foobar dit :

    Bonjour,

    J’ai bien tapé « Me![Date de dernière modification] = Now » mais cela ne fonctionne pas ? Au contraire, erreur sur Me! ???
    Merci.

  4. Hervé Inisan dit :

    sara > Si tu les écris en SQL, tes dates doivent être au format #mm/jj/aaaa# (avec les # comme délimiteurs). Et comme tu compares à un champ Date, la valeur ne peut pas être uniquement 2013 (qui est un nombre entier, mais pas une date).

  5. sara dit :

    HERVE qu’est ce que vous pensez pour ce code :
    SELECT IIf(2013>[Date] And [Clôturé]=No, »oui », » ») AS Retard, *
    FROM Table10

    mais ne fonctionne pas m’affiche rien lui aussi 🙁

  6. sara dit :

    Bonjour Hervé,
    Merci énormément vraiment merci beaucoup pour tout 🙂 , bon voila le code que j’ai fait mais m’affiche rien sur le champ retard :
     » SELECT IIf(12/12/2013<[Date] And [Clôturé]=No, »Retard », » ») AS Retard, *
    FROM Table10
    WHERE (((Table10.Retard) Is Not Null));
    « 

    🙂

  7. Hervé Inisan dit :

    sara > Dans une requête, le calcul pourrait être quelque chose de ce genre :

  8. sara dit :

    Bonjour Hervé,

    Merci pour votre explication de probléme mais est ce que vou pouvez me faire un exemple c’est il vous plait? 🙂 et pour mes autres soucis qui sont sur autre articles j’attend votre réponse avec impatience et Merci d’avance 🙂

  9. Hervé Inisan dit :

    sara > A priori, si le 3ème champ se déduit des deux autres, il ne devrait pas être créé dans la table, mais au contraire être calculé dans une requête. Donc on doit pouvoir éviter du VBA ici, et passer par un champ calculé de requête, avec une formule VraiFaux().

    PS : J’ai vu tes autres questions, sur d’autres articles, mais je n’ai pas encore eu le temps de tout pointer. 😉

  10. sara dit :

    Bonjour hervé,

    Merci pour votre aide et votre site qui est très instructif. Par contre, j’ai un soucis c’est ue je veux faire un champs qui se remplit d’aprés la date de demande par exemple on a une action doit se faire avant 12/12/2013 et on a un autre champs cloturé qui marque que c’est clos ou pas donc: (date =12/12/2013)et (cloturé: OUI/NON)donc moi je veux réaliser un 3éme champs ( retard) remplit tout seul d’aprés les deux champs date et cloturé c’est a dire s’il est cloturé avant la date c’est bon le champ retard est vide si non il marque oui ( il est en retard). j’espère avoir été claire . je voudrais savoir s’il est possible de leur réaliser 🙁

Laisser un commentaire

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