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 :

Compter le nombre de fois qu'un jour est dans une plage de date


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Points : 24
    Points
    24
    Par défaut Compter le nombre de fois qu'un jour est dans une plage de date
    Bonjour

    Voila, je travail avec une date de début de production et une date de fin de production.
    Je voudrais savoir combien il y a eu de vendredi ou de samedi dans cette plage.

    Je ne suis pas un spécialiste pour utiliser du code . Merci de me preciser ou l'inserer et comment l'appeller.

    Merci

  2. #2
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 273
    Points : 258
    Points
    258
    Par défaut
    Tu peux te servir de ces fonctions:

    - Weekday(nomdeladate,2) qui renvoie le numero de jour de la date rentree en mettant 1 = lundi, 2 = mardi

    - DatePart("ww",nomdeladate, 2,2) renvoie le numero de la semaine

    Il ne te reste plus qu'a combiner les 2: si le jour de la semaine de la date de debut est avant le jour de la semaine de la date de fin ce sera le numero de semaine de la date de fin - numero de semaine de la date de debut. Sinon ce sera ce nombre moins 1.

    Apres pour combiner tu peux utiliser IIF(condition,valeur a renvoyer si condition verifiee, valeur a renvoyer si condition pas verifiee)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Je ne comprend pas bien les explications, ou j'ai mal posé la question.

    J'ai un champ "DATEDEB" et un champ "DATEFIN" au format date "09/09/2006".

    Ensuite dans un troisieme champ je dois dire combien il y a de vendredi entre DATEDEB et DATEFIN.

    Merci

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    Voir http://access.developpez.com/sources...nv#NbJourLundi

    pour la méthode.

    Philippe

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    merci pour le code c'est axactement ce que je veux.
    Mais ou dois je le placer et comment je l'appel pour remplir mon champ??

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    Bonjour,

    A quel moment vous voulez le remplir ? Dans un formulaire ? Suite à quel évènement ? Dans une requête ?

    La fonction est a placer dans un module standard.

    Philippe

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Je souhaite l'utiliser dans le formulaire apres avoir saisi mes dates.
    Et apres j'utilise une requete ajout pour stocker le resultat dans une table.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Petite precision, je dois utiliser le resultat (dans le formulaire) pour faire un calcul.
    Je dois aussi pouvoir compter le nombre de WE

  9. #9
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut je sais faire avec ça
    Suppose sur formulaire
    Zone Texte Date1, Date2, Zone liste déroulante 2 colonnes dans laquelle tu entres les valeurs
    Ex. Lundi, 1 – mardi, 2 ……dimanche, 7. et choisir colonne 2 pour stocker la valeur.
    Zone texte NbJour , une autre NbWE pour enregistrer le nombre de jours et de WE pendant la période.
    Enfin un bouton sur lequel tu entres le code sur l’évènement « Sur Click »

    On suppose aussi qu’on est en France que la semaine commence le lundi…..
    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
     
    Private Sub Commande11_Click()
    Dim d, j, j2, jwd As Date
     
    Dim jn, jw, WE, jj As Integer
    j = Date1 - 1
    j2 = Date1 + 1
    jwd = Date1
        Do
        j = j + 1
        jn = Weekday(j, 2)
        jw = Weekday(j2, 2)
        If jn = 6 And jw = 7 And jwd < Date2 Then
        WE = WE + 1
        End If
        If JourJ = jn Then
        jj = jj + 1
        End If
     
        j2 = j2 + 1
     
        jwd = jwd + 1
     
        Loop Until j = Date2
     
    NbJour = jj
    NbWE = WE
    End Sub
    y a peut être plus sophistiqué mais ça marche si pour le moment cela peut faire ton affaire
    à+

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Bon alors j'ai bien nomé les champs comme indiqué. J'ai copié le code dans un module.
    Creer un bouton qui appel une macro pour executer le code.
    Mais rien ne se passe.

    Je pense que c'est la liste déroulante que j'ai mal fait.
    1- Comment dois je la nommer
    2-Je stock le contenu de la valeur dans quoi ? Usage ultérieur ou dans un champ?
    3-est ce que le format de mes champs date à de l'importance ?

  11. #11
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut excuse j'ai pas bien expliqué le code exemple
    dans l'exemple le nom de la Zone déroulante s'appelle JourJ
    elle comporte 2 colonnes
    la premiere Jour en clair exemple Lundi
    la deuxième le N° de Jour 1 "N° du lundi chez nous"
    c'est ce n° qui doit être stocké dans ta Zone donc à la création choisir col2 dans "Stocker ou utiliser dans la base"
    tes champs Dates Date1 et Date2 sont dans l'exemple créés au format date
    si ce n'est pas le cas tu dois les transformé dans le code avec CDate
    ex : Date1 = CDate(Date1)

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Je crois que je vais te rendre fou !

    Alors je vais resumer ce que j'ai fait.

    -Deux champs date au format date (Ils proviennent d'une table) nommé Date1 et Date2
    -Un champ Nbjour (Provient de la même table)
    -Un champ NbWE (Provient de la même table)
    -Une zone de liste déroulante (comme expliqué) option: Memoriser la valeur pour usage ulterieur (Sinon c'est : stocker dans un champ de mon formulaire)
    -Un bouton qui lance une macro (executer le code).

    Et j'ai fait un copier coller du code que tu m'as donné dans module
    C'est ecrit en Haut "general" puis "Déclaration".
    Et en dessous (avant le code) :"Option Compare Database"

    Voilà j'espere que je suis clair parce que quand je click et bien rien ne se passe.

  13. #13
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut on est tous un peu fou quelque part c'est pas grave
    intutile de passer par une macro pour lancer le code
    dans la propriété de ton bouton
    sur evenement sur clik suprime ta macro clique sur ...
    on va te proposer generateur de code
    tu clique dessus et sur OK la fenetre VBA s'ouvre avec

    Private Sub CommandeX_Click()
    -----insère le code ici
    End Sub



    si tu veux absolument mettre le code dans un module je te conseilles toujours sur le même principe qu'en haut
    sur

    Private Sub CommandeX_Click()
    NomdeTafunction(JourJ, Date1, Date2) 'paramètres qui se trouvent dans ta function
    End Sub




    par expérience les macros et access c'est pas le top je préfère passer par du code vba essayes
    sinon essayes de me ziper tas base pour voir si je peux t'aider mieux
    courage
    à+

  14. #14
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut help j'ai peut être zappé quelque chose important
    vérifie ta zone de texte dans ta base
    car a la création d'une liste déroulante par défaut c'est une zone Texte
    hors comme tu stocke et utilise un chiffre dans ta zone
    ex. le 1 de lundi - ta zone doit être numérique .....
    excuse mais avec l'habitude et l'age... on oublie des détails importants

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Voila j'ai trouvé la solution pour te l'envoyer

    http://mycrodom.free.fr/backup.zip

  16. #16
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut tu n'est pas loin du but !!!!
    enfin presque car en ce qui concerne le nombre de jours fériés c'est une autre affaire pas trop le temps pour l'instant mais je m'en occupe
    tu as 2 problème un que je pressentais l'autre non
    d'abord sur le champ Zone de liste Jour il faut effectivement le transformer en format nombre
    pour faire vite va dans
    Zone liste JourJ - Format.............Standard

    sur le code tu as 2 lignes qui concerne l'evenement clik de l'exemple qu'il te faut supprimer
    Private Sub Commande11_click
    et premier
    end sub
    tu devais le savoir mais cela t'as surement échappé

    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 Commande90_Click()
    'Private Sub Commande11_Click()
    Dim d, j, j2, jwd As Date
    
    Dim jn, jw, WE, jj As Integer
    j = Date1 - 1
    j2 = Date1 + 1
    jwd = Date1
        Do
        j = j + 1
        jn = Weekday(j, 2)
        jw = Weekday(j2, 2)
        If jn = 6 And jw = 7 And jwd < Date2 Then
        WE = WE + 1
        End If
        If JourJ = jn Then
        
        
        jj = jj + 1
        End If
        
        j2 = j2 + 1
        
        jwd = jwd + 1
        
        Loop Until j = Date2
    
    Nbjour = jj
    NbWE = WE
    'End Sub
    
    End Sub
    d'autre part il semble en fait que ce qui t'intérèsse ce n'est que compter les vendredi
    dans ce cas tu peux mettre le code suivant et supprimer ta zone de liste déroulant JourJ
    je fais vite on peut affiner mais je ferais une autre fois simplement pour que tu avances un peu

    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
     
     
    Private Sub Commande90_Click()
     
    Dim d, j, j2, jwd As Date
     
    Dim jn, jw, WE, jj As Integer
    j = Date1 - 1
    j2 = Date1 + 1
    jwd = Date1
        Do
        j = j + 1
        jn = Weekday(j, 2)
        jw = Weekday(j2, 2)
        If jn = 6 And jw = 7 And jwd < Date2 Then
        WE = WE + 1
        End If
        If jn = 5 Then 'soit le vendredi
     
        jj = jj + 1
        End If
     
        j2 = j2 + 1
     
        jwd = jwd + 1
     
        Loop Until j = Date2
     
    Nbjour = jj
    NbWE = WE
    End Sub
    Attention si tu fais un copié collé ne pas 2 fois Private sub et end sub
    sinon le vieux pas content
    allez à plus et bon courage

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    EXTRA

    Cette fois ca marche du premier coup. J'ai le Nb de Vendredi et le Nb de WE.

    Grand MERCI a toi le vieux.

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

Discussions similaires

  1. Macro pour compter le nombre de fois qu'apparait un mot dans une feuille
    Par arno1975 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/02/2014, 10h27
  2. [XL-2010] Compter le nombre de fois qu'apparait un texte dans une plage de donnée nommée
    Par saloupio dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/01/2014, 09h17
  3. [MySQL] Compter le nombre de fois qu'un pilote à gagner dans une saison
    Par Neo57 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/10/2010, 11h22
  4. Réponses: 4
    Dernier message: 06/12/2007, 17h46
  5. Réponses: 1
    Dernier message: 01/05/2007, 11h39

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