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 :

Calculer le nb de vehicule par jour [AC-2007]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Par défaut Calculer le nb de vehicule par jour
    Bonjour,

    J'ai une table qui regroupe les vehicules qui ont ou qui sont réparés.
    J'ai 3 colonnes: l' immatriculation du véhicule en réparation, la date d'arrivée et celle de départ.
    Comment faire pour connaitre le nb de véhicule en réparation tous les jours de l'année.

    Par exemple pour le 01/08/2010, je peux faire un filtre arrivée avant le 01/08/2010 et départ aprés le 01/08/2010. puis compte sur l'immatriculation.

    Mais comment faire pour avoir tous les jours de l'année sans faire 365 requetes (1 par jour).

    Y a t'il une fonction somme avec un filtre?

    Merci par avance

    Seb

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 324
    Par défaut
    Comprends pas trop le problème. Avec une requête cela ne marche pas?

  3. #3
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour,

    tu pourrais :
    1° te créer un table "calendrier" qui contient les 365 jours. Vite fait avec Excel que tu importes ensuite dans Access
    2° une requête 2 colonnes sur cette table
    1ère colonne : la dateJ
    2ème colonne : avec Dcount() le nombre d'enregistrements dans la table Véhicules qui répondent à la condition DateArrivée>=DateJ et DateDépart<=DateJ

  4. #4
    Membre actif
    Inscrit en
    Septembre 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 18
    Par défaut
    pouvez vous nous décrire le formulaire ou vous allez afficher le résultat ?

  5. #5
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour cherifarouk et sebing,

    si la table qui contient tous les jours s'appelle "Calendrier" et la date "DateJour"
    la requête "01VehiculesPrésentsDétail" dont voici le sql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Calendrier.DateJour
    FROM Calendrier, Vehicules
    WHERE (((Calendrier.DateJour)>=[DateArrivée] And (Calendrier.DateJour)<=[DateDépart]))
    ORDER BY Calendrier.DateJour;
    vous donne, date par date autant de lignes qu'il y a de véhicules présents pour cette date. Remarque qu'il n'y a pas de liaison entre les 2 tables. La requête va donc porter sur toutes les combinaisons d'une dateJ avec chaque enregistrement de la table vehicules.
    Dans cet ensemble on sélectionne ceux qui répondent "présent" à la dateJ
    (Nb dans mon exemple, je compte le jour d'arrivée et le jour de départ. A vous de voir si un véhicule entré le 2/3 et sorti le 3/3 est compté pour 2 jours)

    Ensuite, un requête sur "01VehiculesPrésentsDétail" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [01VehiculesPrésentsDétail].DateJour, Sum(1) AS Expr1
    FROM 01VehiculesPrésentsDétail
    GROUP BY [01VehiculesPrésentsDétail].DateJour;
    donne le résultat demandé.

    Solution en une seule requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Calendrier.DateJour, Sum(1) AS Expr2
    FROM Calendrier, Vehicules
    WHERE ((([DateJour]>=[DateArrivée] And [DateJour]<=[DateDépart])=True))
    GROUP BY Calendrier.DateJour;

  6. #6
    Membre actif
    Inscrit en
    Septembre 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 18
    Par défaut
    si on veut le nbr des véhicules réparées, je pense qu'il faut résonner seulement sur la date de départ n'est-ce pas?

  7. #7
    Membre éclairé
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Par défaut
    Citation Envoyé par ClaudeLELOUP Voir le message
    Bonjour cherifarouk et sebing,

    si la table qui contient tous les jours s'appelle "Calendrier" et la date "DateJour"
    la requête "01VehiculesPrésentsDétail" dont voici le sql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Calendrier.DateJour
    FROM Calendrier, Vehicules
    WHERE (((Calendrier.DateJour)>=[DateArrivée] And (Calendrier.DateJour)<=[DateDépart]))
    ORDER BY Calendrier.DateJour;
    vous donne, date par date autant de lignes qu'il y a de véhicules présents pour cette date. Remarque qu'il n'y a pas de liaison entre les 2 tables. La requête va donc porter sur toutes les combinaisons d'une dateJ avec chaque enregistrement de la table vehicules.
    Dans cet ensemble on sélectionne ceux qui répondent "présent" à la dateJ
    (Nb dans mon exemple, je compte le jour d'arrivée et le jour de départ. A vous de voir si un véhicule entré le 2/3 et sorti le 3/3 est compté pour 2 jours)

    Ensuite, un requête sur "01VehiculesPrésentsDétail" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [01VehiculesPrésentsDétail].DateJour, Sum(1) AS Expr1
    FROM 01VehiculesPrésentsDétail
    GROUP BY [01VehiculesPrésentsDétail].DateJour;
    donne le résultat demandé.

    Solution en une seule requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Calendrier.DateJour, Sum(1) AS Expr2
    FROM Calendrier, Vehicules
    WHERE ((([DateJour]>=[DateArrivée] And [DateJour]<=[DateDépart])=True))
    GROUP BY Calendrier.DateJour;
    Merci pour l'aide c'est ce que je cherche, je vais essayé, et je vous informerais du résultat.
    si on veut le nbr des véhicules réparées, je pense qu'il faut résonner seulement sur la date de départ n'est-ce pas?
    Je veux les véhicules immobilisés tel jour.


    Merci encore

    seb

  8. #8
    Membre éclairé
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Par défaut
    Il y a une coquille, c'est qu'il ne me comptabilise pas les véhicules qui ne sont pas sortie.
    En gros les véhicules qui sont en cours de réparations.
    Exemple aujourd'hui j'ai 98 véhicules et il en comptabilise qu'une vingtaine (ceux terminés).

    Je vais réfléchir et je donne la solution. Amoins que vous ayez une solution.

    Merci

    seb

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour,

    hoops , dans mes tests j'avais oublié cette éventualité.
    Il faut donc inclure les cas où arrivée est >= date mais départ est null.
    La solution en 1 requête devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Calendrier.DateJour, Sum(1) AS Expr2
    FROM Calendrier, Vehicules
    WHERE (((([DateJour]>=[DateArrivée] And [DateJour]<=[DateDépart]) Or ([DateJour]>=[DateArrivée] And IsNull([DateDépart])))=True))
    GROUP BY Calendrier.DateJour;

  10. #10
    Membre éclairé
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Par défaut
    Citation Envoyé par ClaudeLELOUP Voir le message
    Bonjour,

    hoops , dans mes tests j'avais oublié cette éventualité.
    Il faut donc inclure les cas où arrivée est >= date mais départ est null.
    La solution en 1 requête devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Calendrier.DateJour, Sum(1) AS Expr2
    FROM Calendrier, Vehicules
    WHERE (((([DateJour]>=[DateArrivée] And [DateJour]<=[DateDépart]) Or ([DateJour]>=[DateArrivée] And IsNull([DateDépart])))=True))
    GROUP BY Calendrier.DateJour;
    Super c'est exactement ce que je voulai.
    J'ai juste rajouté un filtre sur la date du jour <=maintenant(), afin de ne pas avoir les jours qui succédent à aujourd'hui.

    Merci encore.

    Bonne journée

    Seb

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

Discussions similaires

  1. [AC-2010] Calcul par jour
    Par HABILER dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 02/02/2015, 08h10
  2. Réponses: 2
    Dernier message: 27/12/2014, 09h42
  3. [CR XI] Calculer la somme d'heure par jour
    Par SophieTaureau dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 12/03/2012, 10h06
  4. Réponses: 4
    Dernier message: 10/04/2007, 12h43
  5. [Petite requête] Nombre de transactions par jour
    Par Braim dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/04/2003, 10h53

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