IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Date de mise à jour saisie automatiquement [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 51
    Points : 23
    Points
    23
    Par défaut Date de mise à jour saisie automatiquement
    Bonjour,

    Dans ma base de données Access, j'ai une table avec un champ "Mise à jour". J'aimerais que, dans ce champ, s'inscrive automatiquement la date à laquelle la table est mise à jour, c'est-à-dire à chaque modification d'un des champs de la table.

    J'ai essayé de mettre =Date() dans valeur par défaut du champ mais cela me met la date à laquelle une nouvelle ligne est créée. Cette date ne change plus après modification.

    J'ai également essayé d'insérer le code suivant dans mon formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Mise_a_jour_BeforeUpdate(Cancel As Integer)
    Me![Mise_a_jour] = Date
    End Sub
    Encore une fois, cela ne fonctionne pas. Le champ "Mise à jour" ne se remplit pas automatiquement.

    Est-ce que quelqu'un a la solution à mon problème?

    Merci d'avance!

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 266
    Points
    34 266
    Par défaut
    Salut,

    ce que tu cherches correspond en fait aux triggers (déclencheurs)

    un exemple de ce que tu peux faire est disponible dans le tuto :
    http://warin.developpez.com/tutoriel...s/?page=page_2
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 51
    Points : 23
    Points
    23
    Par défaut
    Merci beaucoup. J'ai lu attentivement ce tuto et ai essayé de l'appliquer pour mettre mon champ "Mise à jour" à jour lors de chaque nouvel enregistrement.

    Malheuresement je n'y suis pas arrivée. C'est la première fois que j'utilise les triggers.

    Peut-être as-tu déjà été amené à le faire dans l'une de tes base de données? Si oui, est-il possible de m'indiquer la démarche à suivre car je suis un peu perdue?

    Merci beaucoup!

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 51
    Points : 23
    Points
    23
    Par défaut
    Est-ce que quelqu'un s'y connait en triggers?

    Merci d'avance!

  5. #5
    Membre du Club
    Homme Profil pro
    Directeur Hôtelier
    Inscrit en
    Janvier 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur Hôtelier
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2011
    Messages : 48
    Points : 52
    Points
    52
    Par défaut
    Salut Aline,

    Sur quelle table fais tu les modifications ?
    Comment valides tu les modifications ? Bouton ? Champs par champs ?

    Le mieux je pense serait de passer par du VBA à l'enregistrement sur Clique. quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Private Sub Form_BeforeUpdate(Cancel As Integer)
    'On empèche l'enregistrement automatique
    End Sub
     
    Private Sub Enregistrer_Click()
    'On enregistre sur clique du bouton Enregistrer
    Enregistrement = Me.N° 'On récupère le N° d'enregistrement
     
    If Me.Dirty Then 'Si modification message d'avertissement
        If MsgBox("Souhaitez-vous modifier l'enregistrement ?", vbQuestion + vbYesNo, "CONFIRMATION") = vbNo Then 'Si annulation des modifs
            DoCmd.RunCommand acCmdUndo 'On annule les Modifs faites
            DoCmd.Close acForm, "Formulaire_Modification" 'On ferme le formulaire
        Else 'Sinon
            DoCmd.RunCommand acCmdSaveRecord 'On enregistre les Modifs
     
            SqlModif = "UPDATE [Table] SET Table.[Mise_a_jour] = Date() Where Table.[N°] =" & Enregistrement & ";" 'On génère une requête SQL pour le champ MAJ
     
            DoCmd.SetWarnings False 'On vire les avertissements
            DoCmd.RunSQL SqlModif 'On envoi la requête SQL
            DoCmd.SetWarnings True 'On remet les avertissements
     
            DoCmd.Close acForm, "Formulaire_Modification" ' On ferme le Formulaire
        End If
    End If
    End Sub
    Pour ce cas de figure il faut prendre en compte plusieurs choses :
    • Le formulaire ne doit pas être continu
    • On doit avoir le champ "N°" (invisible) pour savoir quel enregistrement on modifie
    • Ondoit avoir un bouton "enregistrer" pour éviter les enregistrement directes


    Si besoin j'ai toujours ton application dont je peut me servir pour d'éventuels exemples.

    CDT, Nicolas




    EDIT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_BeforeUpdate(Cancel As Integer)
    Cancel = True 'Petit oubli
    End Sub
    Cordialement, Nicolas

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 51
    Points : 23
    Points
    23
    Par défaut
    Comment faire si je veux que la date de tous les champs se mette à jour?

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Re-bonjour,
    Je crois que tu as un problème de vocabulaire...
    Une table est composée de champs (ou d'attributs suivants les écoles). Ce sont les colonnes lors de l'affichage des données d'une table.
    Chaque ligne de la table correspond à ce qu'on appelle un enregistrement (record en anglais). Un enregistrement est donc, bien sûr, composé aussi des différents champs de la table.
    A mon avis (mais je peux me tromper), ta question est :
    Citation Envoyé par alineleleu Voir le message
    Comment faire si je veux que la date de tous les enregistrements se mette à jour?
    Et bien tu as déjà la réponse donnée par Smoky :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_AfterUpdate()
        CurrentDb.Execute "UPDATE MaTable SET [Mise_a_jour]= Date();"
    End Sub
    L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 51
    Points : 23
    Points
    23
    Par défaut
    Tout à fait, enregistrement!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Date sans mise à jour automatique
    Par EmmanuelleFFH dans le forum Excel
    Réponses: 4
    Dernier message: 20/07/2011, 11h07
  2. [HTML 4.0] Indiquer la date de mise à jour pour rechargement automatique
    Par electroremy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 17/04/2011, 18h13
  3. date de mise à jour automatique
    Par djsamuel dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/04/2010, 08h23
  4. Date de mise à jour dans access
    Par Gabe74 dans le forum Access
    Réponses: 1
    Dernier message: 04/09/2006, 14h27
  5. Réponses: 4
    Dernier message: 03/05/2006, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo