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

IHM Discussion :

Soustraire une valeur en fonction des dates [AC-2003]


Sujet :

IHM

  1. #1
    Membre habitué Avatar de anouar_chaieb
    Inscrit en
    Mai 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 282
    Points : 180
    Points
    180
    Par défaut Soustraire une valeur en fonction des dates
    Bonjour,
    J'aimerais créer un champ ayant le résultat de l'écart entre la valeur de la date d'aujourd'hui et la date précédente.
    Exemple:
    Mon champ = (Compteur de la date du 13/8/2024) - (Compteur de la date du 12/8/2024)
    A chaque fois où je me déplace dans mon formulaire il me fait cette formule (exp: Si je suis à la date du 5/8/2024 il me fait compeur du 5/8/2024 - compteur du 4/8/2024)

    Merci
    Quel est le plus rapide? lire le FAQ:

    http://access.developpez.com/faq/ Ou bien créer un post?

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour.

    Access n'a pas la notion de ligne précédente donc pour faire ce que tu veux tu dois lui demander de trouver l'info qui t'intéresse.

    Selon ton besoin et ta solution tu peux utiliser un truc du genre Dfirst("TonChampCompteur"; "TaSource"; "[DateCompteur]=#" & format([TonChampDateHier];"yyyy-mm-dd") & "#").
    Cela va trouver l'enregistrement avec le compteur à date voulue.

    Ou devoir refaire le calcul avec un machin du type Dsum("TonChampACompter"; "TaSource"; "[DateCompteur]<=#" & format([TonChampDateHier];"yyyy-mm-dd") & "#")Cela va faire la somme des champs TonChampACompter jusqu'à la date voulue.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre habitué Avatar de anouar_chaieb
    Inscrit en
    Mai 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 282
    Points : 180
    Points
    180
    Par défaut
    Peut être j'ai mal exprimé, Je clarifie:
    J'ai un champ "Compteur" et un champ "Date" chaque jour je fais entrer manuellement la date et le compteur.
    Je cherche à ajouter un champ indépendant (consommation) afin de calculer la différence entre le compteur de la date récente et le compteur de la date précédente.

    Exemple:

    Date Compteur Consommation
    11/08/2024 150000 0
    12/08/2024 160500 10500
    13/08/2024 175000 14500
    Quel est le plus rapide? lire le FAQ:

    http://access.developpez.com/faq/ Ou bien créer un post?

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour.
    Donc tu es dans le 1er cas.
    Est-ce que tu as des données pour TOUS les jours de l'année ?
    Si oui tu peux trouver ton compteur de la veille en ajoutant 2 champs dans ta source de données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dfirst("Compteur"; "TableHistoCompteur"; "[Date]=#" & format([Date]-1;"yyyy-mm-dd") & "#") as CompteurHier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Compteur]-[CompteurHier] as DeltaCompteur
    Si tu n'as pas des données tous les jours alors il va te falloir trouver quelle est la date précédente et utiliser cette date dans le dfirst.

    Un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dmax("Date"; "TableHistoCompteur"; "[Date]<=#" & format([Date];"yyyy-mm-dd") & "#") as DateHier
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dfirst("Compteur"; "TableHistoCompteur"; "[Date]=#" & format([DateHier]; "yyyy-mm-dd") & "#") as CompteurHier
    Note que les fonctions de domaines (Dfirst, DMax) sont assez lentes et que si tu as beaucoup de données ça risque de ramer.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre habitué Avatar de anouar_chaieb
    Inscrit en
    Mai 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 282
    Points : 180
    Points
    180
    Par défaut
    Bonjour.
    Donc tu es dans le 1er cas.
    Est-ce que tu as des données pour TOUS les jours de l'année ?
    Si oui tu peux trouver ton compteur de la veille en ajoutant 2 champs dans ta source de données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dfirst("Compteur"; "TableHistoCompteur"; "[Date]=#" & format([Date]-1;"yyyy-mm-dd") & "#") as CompteurHier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Compteur]-[CompteurHier] as DeltaCompteur
    Bonjour,
    J'ai essayé avec le premier cas, mais ça n'a pas marché, si possible plus de précision pas à pas.
    Merci
    Quel est le plus rapide? lire le FAQ:

    http://access.developpez.com/faq/ Ou bien créer un post?

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour.

    Cela n'a pas marché comment ?
    1. Tu as une erreur ? Laquelle ? Où ?
    2. Tu n'as pas d'erreur mais pas le résultat attendu ? Tu as quoi ? Tu veux quoi ?
    3. Tu n'as juste pas de résultat ? Est-ce que tu as des données qui correspondent à ce que tu veux dans ta source ? Est-ce que ton code est bien exécuté ?


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Membre habitué Avatar de anouar_chaieb
    Inscrit en
    Mai 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 282
    Points : 180
    Points
    180
    Par défaut
    Bonjour et merci pour votre interêt.

    J'ai mis le code dans une requête:

    CompteurHier: =Dfirst("ChampAyantIndexCompteur"; "MaTable"; "[DateRelevéIndex]=#" & format([DateRelevéIndex]-1;"yyyy-mm-dd") & "#")
    DeltaCompteur: =[ChampAyantIndexCompteur]-[CompteurHier]

    Certainement une erreur n'est ce pas?? l'emplacement des champs et des codes??

    Grand merci
    Quel est le plus rapide? lire le FAQ:

    http://access.developpez.com/faq/ Ou bien créer un post?

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 817
    Points : 14 911
    Points
    14 911
    Par défaut
    bonjour,
    Certainement une erreur n'est ce pas?? l'emplacement des champs et des codes??
    oui car dans une requête un champ calculé (comme ici CompteurHier) ne peut être utilisé dans un autre champ calculé (comme ici DeltaCompteur), il faut l'utiliser directement dans ton calcul:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DeltaCompteur: =[ChampAyantIndexCompteur]-Nz(Dfirst("ChampAyantIndexCompteur"; "MaTable"; "[DateRelevéIndex]=#" & format([DateRelevéIndex]-1;"yyyy-mm-dd") & "#");0)
    Nz() c'est pour éviter que la fonction de domaine renvoie un résultat nul si il ne trouve pas l'enregistrement ce qui rendrait nulle la soustraction
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  9. #9
    Membre habitué Avatar de anouar_chaieb
    Inscrit en
    Mai 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 282
    Points : 180
    Points
    180
    Par défaut
    GRAND MERCI !!
    Mais je vais éviter la fonction NZ:

    Nom : 001.jpg
Affichages : 39
Taille : 89,2 Ko
    Quel est le plus rapide? lire le FAQ:

    http://access.developpez.com/faq/ Ou bien créer un post?

  10. #10
    Membre habitué Avatar de anouar_chaieb
    Inscrit en
    Mai 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 282
    Points : 180
    Points
    180
    Par défaut
    Citation Envoyé par anouar_chaieb Voir le message
    GRAND MERCI !!
    Mais je vais éviter la fonction NZ:

    Nom : 001.jpg
Affichages : 39
Taille : 89,2 Ko
    C'est vraiment incroyable, j'ai testé NZ 3 fois et dans la 4ème elle me renvoie ZERO !!!!
    De nos jours tout est possible..hhhhhhh
    Merci à tous
    Quel est le plus rapide? lire le FAQ:

    http://access.developpez.com/faq/ Ou bien créer un post?

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 817
    Points : 14 911
    Points
    14 911
    Par défaut
    C'est vraiment incroyable, j'ai testé NZ 3 fois et dans la 4ème elle me renvoie ZERO !!!!
    je ne comprend pas trop à quoi correpond les les 3 et 4ème fois: s'agit-il de tests différents ?
    De nos jours tout est possible..hhhhhhh
    non, c'est un résultat logique en mathématique: 14879 - 0 donne 14879
    je pensais que c'est ce résultat que tu voulais, mais en fait tu ne veux pas de soustraction pour le premier enregistrement.

    en logique informatique (je ne sais pas si c'est pareil en maths, n'ayant jamais brillé dans cette matière):
    14879 - nul donne nul

    donc pas besoin de Nz()
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

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

Discussions similaires

  1. [XL-365] Afficher une valeur en fonction de dates
    Par filsdepub dans le forum Excel
    Réponses: 4
    Dernier message: 12/05/2021, 10h09
  2. Réponses: 6
    Dernier message: 07/01/2019, 11h55
  3. Réponses: 4
    Dernier message: 22/12/2016, 17h02
  4. [XL-2013] Tracer une courbe en fonction des dates ?
    Par genius4evers dans le forum Excel
    Réponses: 1
    Dernier message: 04/01/2016, 12h55
  5. [XL-2010] Somme de valeurs en fonction des dates
    Par Sabinette dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 30/04/2015, 17h55

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