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

Access Discussion :

Valeur de l'année précédente par défaut


Sujet :

Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 21
    Points : 7
    Points
    7
    Par défaut Valeur de l'année précédente par défaut
    Bonjour à tous,
    J'aimerai faire apparaitre une valeur par défaut qui appelle un enregistrement précédent:

    Ex: NumFicheIndicateur ;NumSite; AnneeFiche; QuantiteMetal
    1 1 2004 120
    2 2 2004 210
    3 1 2005 150
    4 2 2005 160

    Je crée une nouvelle fiche (NumFicheIndicateur=5) pour le NumSite=1, AnneeFiche=2006 et j'aimerai que par défaut il fasse référence à la quantité de métal saisie l'année dernière soit en 2005(QuantiteMetal=150)

    Cela doit être possible mais comment?

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Sur l'évenement After Update du controle de l'année (une zone de texte), tu récupère la valeur de l'ancienne année avec DAO ou la fonction RechDom

    Si on prend l'exemple que tes controles sont préfixés par txt :

    Private Sub txtAnneeFiche_AfterUpdate()
    me.txtQuantiteMetal=RechDom("QuantiteMetat","TaTable","AnneeFiche=" & AnneeFiche-1)
    End sub

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 21
    Points : 7
    Points
    7
    Par défaut Message erreur
    Merci pour la fonction mais ça n'a pas marché!
    Un message d'erreur apparait:

    Erreur de compilation
    Sub ou fonction non définie

    Et il surligne AnneeFiche (&AnneeFiche-1)

    D'ou ca peut venir? en sachant que mon AnneeFiche est numériquej'ai écris:
    Private Sub numAnneeFiche_AfterUpdate()
    Me.QuantiteMetal = RechDom("QuantiteMetal", "T_FICHE_INDICATEUR", "AnneeFiche=" & AnneeFiche - 1)
    End Sub

  4. #4
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Salut grasduslip,
    Voici ta table que je vais nommer TaTable:
    NumFicheIndicateur NumSite AnneeFiche QuantiteMetal
    1 1 2004 120
    2 2 2004 210
    3 1 2005 150
    4 2 2005 160

    Tofalu a écrit:
    RechDom("QuantiteMetal","TaTable","AnneeFiche=" & AnneeFiche-1
    )

    VBA ne reconnait pas RechDom, mais DLookUp. Et garsduslip a mal interprété la proposition de Tofalu. Il fallait écrire de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.txtQuantiteMetal=DLookUp("[QuantiteMetal]","TaTable","[AnneeFiche]=[AnneeFiche]-1 AND [NumSite]=1)
    Car tu veux avoir la valeur de la quantité de métal de l'année précédente pour le site concerné, non? Et si l'année précédente n'est pas Année en cours -1? Car il se peut qu'en 2005 (ce n'est qu'une suggestion!) il n'y en avait pas de quantité mais c'est en 2004. En gros le problème devrait se poser comme suit: retrouver la quantité de métal d'une année antérieur la plus proche pour un site précis!

    Dans ce cas, essayons quelques codes:
    Il faut obtenir l'année de l'enregistrement en cours, le site en cours afin d'obtenir une quantité antérieure la plus proche.

    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
    26
    27
    28
    29
    30
    31
    32
    33
    Private Sub AnneeFiche_Exit(Cancel As Integer)
      'Déclaration des variables
      Dim xSite As Long, xAnnee As Long, xQté As Long
      xQté = 0
      xSite = Me.NumSite
      xAnnee = Me.AnneeFiche
     
      'Déclaration des variables objets
      Dim db As DAO.Database, tbl As DAO.Recordset
      Set db = CurrentDb
      'tbl sélectionne le premier champ QuantiteMetal correspondant à l'année et au site. trié de manière décroissante par l'année
      Set tbl = db.OpenRecordset("SELECT TOP 1 TaTable.QuantiteMetal " & _
      "FROM TaTable " & _
      "WHERE TaTable.NumSite=" & xSite & " AND TaTable.AnneeFiche<" & xAnnee & " " & _
      "ORDER BY TaTable.AnneeFiche DESC;", dbOpenDynaset)
     
      With tbl
        If .RecordCount <> 0 Then
          .MoveFirst
          xQté = .Fields(0).Value
        Else
          xQté = 0
        End If
        .Close
      End With
      'Libération des ressources
      Set tbl = Nothing
      Set db = Nothing
     
      'Je ne veux pas modifier la valeur si la quantité est différent de zéro
      If Me.QuantiteMetal <> 0 Then Exit Sub
      Me.QuantiteMetal = xQté
    End Sub
    Je te passe en fichier joint le fichier access illustrant tout ceci!

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Merci Mahefasoa pour le code, je l'essayerai une fois que ma fonction marchera
    Mahefasoa a écrit
    Me.txtQuantiteMetal=DLookUp("[QuantiteMetal]","TaTable","[AnneeFiche]=[AnneeFiche]-1 AND [NumSite]=1)
    N'as tu pas oublié des guillemets? car ça ne fonctionnait pas
    J'ai rajouté des guillemets à la fin, il n'y a plus d'erreur mais rien ne s'affiche dans mon champ. Voici mon code!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.txtQuantiteMetal=DLookUp("[QuantiteMetal]","TaTable","[AnneeFiche]=[AnneeFiche]-1 AND [NumSite]=1")
    Vois tu d'ou vient le problème?

  6. #6
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Salut,

    Effectivement, j'ai oublié un guillemet.

    Par contre, le code que je t'ai proposé fait la même chose que la ligne DLookUp! à la différence que le code ne fait pas uniquement Année-1 et Année précédente tout court!

    Je pense que c'est la même chose.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Merci pour la précision mais toujours rien ne s'affiche dans mon champ txtQuantiteMetal quand je commence un nouvel enregistrement et que je sélectionne la date!!!

    Sais tu pourquoi?

  8. #8
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Salut,
    As-tu déja consulter le fichier attaché que j'ai propsé?

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Salut,
    Non car je ne peux pas l'ouvrir!
    "Format de base de donnée non reconnue".
    Je travaille sous Access 97, et toi?

  10. #10
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Salut, je te le renvoie alors en format 97. Je travaille sur Access 2003. Excuse moi, je ne le savais pas! (après le déjeuner)

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Salut, Peux tu me l'envoyer en format Access 97, merci

  12. #12
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Salut,

    Voila le fichier au format 97 et excuse moi pour le retard.

    Merci pour ta compréhension.

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Merci pour ton aide!
    J'ai regardé ton fichier simple qui marche très bien.

    Mais lorsque je transpose ton code dans mon fichier, cela ne marche toujours pas. Je suis dessus depuis ce matin et je ne comprends pas d'ou vient l'erreur, mais rien ne s'affiche dans mon champ QuantiteMetal!
    J'ai beau essayé de modifier les paramètres (nom des champs) ou de modifier l'emplacement de la procédure évenementielle mais rien ne change. Ce matin, il m'affichait un code erreur que je n'ai plus mais toujours rien d'inscrit dans mon champ...

    Je ne sais pas si tu as une idée. Si t'en a une merci sinon je me débrouillerai voir abandonnerai car ça fait un moment que je m'embête avec ça!

    Merci de m'avoir consacré du temps

  14. #14
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 20
    Points
    20
    Par défaut meme probleme
    bonjour
    j'ai le méme probleme ...peux tu m'envoyer la soluce stp
    Citation Envoyé par grasduslip
    Merci pour ton aide!
    J'ai regardé ton fichier simple qui marche très bien.

    Mais lorsque je transpose ton code dans mon fichier, cela ne marche toujours pas. Je suis dessus depuis ce matin et je ne comprends pas d'ou vient l'erreur, mais rien ne s'affiche dans mon champ QuantiteMetal!
    J'ai beau essayé de modifier les paramètres (nom des champs) ou de modifier l'emplacement de la procédure évenementielle mais rien ne change. Ce matin, il m'affichait un code erreur que je n'ai plus mais toujours rien d'inscrit dans mon champ...

    Je ne sais pas si tu as une idée. Si t'en a une merci sinon je me débrouillerai voir abandonnerai car ça fait un moment que je m'embête avec ça!

    Merci de m'avoir consacré du temps

Discussions similaires

  1. valeur précédente par défaut
    Par martin91 dans le forum LabVIEW
    Réponses: 5
    Dernier message: 14/04/2011, 12h57
  2. Réponses: 2
    Dernier message: 25/06/2010, 10h25
  3. combobox : charger la valeur précédente par défaut
    Par Nikes dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/10/2009, 10h49
  4. Valeur Max d'un champ par défaut
    Par popoliline dans le forum Access
    Réponses: 2
    Dernier message: 01/09/2006, 18h30
  5. Valeur précédente par défaut
    Par jusala dans le forum Access
    Réponses: 2
    Dernier message: 02/02/2006, 19h16

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