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 :

Calculer enregistrement d'une date en fonction de dates


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut Calculer enregistrement d'une date en fonction de dates
    Bonjour,

    J'ai un BD access 2010, je ne parviens pas à trouver de solution pour le problème suivant :

    J'ai un formulaire où l'utilisateur indique une "date de début" et une "date de fin" (ces 2 dates sont dans la Table T_DateDebFin)
    Je souhaite qu'en fonction de ces 2 dates acess puissent enregistrer sur ma table T_DateSuivi
    - Le n° de la semaine calendaire (pour chaque semaine entre les 2 dates)
    - La date de la semaine (pour chaque semaine entre les 2 dates)


    Merci pour votre aide préciseuse

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Qu'est ce que tu entends par "Date de la semaine" (pour chaque semaine entre les 2 dates) ?
    Par VBA, j'utiliserais DAO,
    1- Faire une boucle entre les 2 dates saisies avec un pas de 7
    2- Calculer le numéro de la semaine correspondante à la date d'itération.
    3- Insérer ce numéro dans la table Suivi par une requête INSERT ou avec un AddNew en DAO.
    4- Calculer la date de la semaine (Il faudrait une réponse à la première question posée pour comprendre ce que tu veux dire).
    5- Insérer la valeur dans la table Suivi.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par madefemere Voir le message
    Bonjour,

    Qu'est ce que tu entends par "Date de la semaine" (pour chaque semaine entre les 2 dates) ?
    Par VBA, j'utiliserais DAO,
    1- Faire une boucle entre les 2 dates saisies avec un pas de 7
    2- Calculer le numéro de la semaine correspondante à la date d'itération.
    3- Insérer ce numéro dans la table Suivi par une requête INSERT ou avec un AddNew en DAO.
    4- Calculer la date de la semaine (Il faudrait une réponse à la première question posée pour comprendre ce que tu veux dire).
    5- Insérer la valeur dans la table Suivi.

    Cordialement,
    Merci, par contre je suis novice dans la VBA, pourriez vous m'indiquer le code ou la requête à réaliser

    Voici un exemple de ce que je soujaite réaliser

    I Date début : 11/07/2014
    I DIate de fin : 10/10/2014


    T_Date de suivi
    "CodeDateSuivi" "Semaine" "Date semaine"
    1 28 11/07/2014
    2 29 18/07/2014
    3 30 25/07/2014
    4 31 01/08/2014
    5 32 08/08/2014
    6 33 15/08/2014
    7 34 22/08/2014
    8 35 29/08/2014
    9 36 05/09/2014
    10 37 12/09/2014
    11 38 19/09/2014
    12 39 25/09/2014
    13 40 03/10/2014
    14 41 10/10/2014

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,
    Un exemple est joint.
    Je te conseille de lire le tuto sur les dates ICI pour comprendre les manipulations des dates .

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Merci beaucoup c'est exactement ce que je cherchais à faire

    Alors maintenant que j'ai réussi à expliquer mon mon besoin je cherche à réaliser l'exemple ci après :


    Voici un exemple de ce que je soujaite réaliser ==> ajouter 2 colonne à numéroter
    - CodeDateSuivi_RFP : commence à 1 (à partir de la date début RFP) et +1 pour chaque ligne (jusqu'à la date de fin RFP)
    - CodeDateSuivi_RIM : commence à 1 (à parti de la date début RIM) et +1 pour chaque ligne (jusqu'à la date de fin RIM)

    Exemple résultat attendu

    Date de Recette RFP
    I Date début : 11/07/2014
    I DIate de fin : 10/10/2014

    Date de recette RIM
    I Date début : 01/08/2014
    I DIate de fin : 17/10/2014

    T_Date de suivi
    "CodeDateSuivi" "Semaine" "Date semaine" "CodeDateSuivi_RFP" "CodeDateSuivi_RIM"
    1 - 28 - 11/07/2014 - 1 - (vide)
    2 - 29 - 18/07/2014 - 2 - (vide)
    3 - 30 - 25/07/2014 - 3 - (vide)
    4 - 31 - 01/08/2014 - 4 - 1
    5 - 32 - 08/08/2014 - 5 - 2
    6 - 33 - 15/08/2014 - 6 - 3
    7 - 34 - 22/08/2014 - 7 - 4
    8 - 35 - 29/08/2014 - 8 - 5
    9 - 36 - 05/09/2014 - 9 - 6
    10 - 37 - 12/09/2014 - 10 - 7
    11 - 38 - 19/09/2014 - 11 - 8
    12 - 39 - 25/09/2014 - 12 - 9
    13 - 40 - 03/10/2014 - 13 - 10
    14 - 41 - 10/10/2014 - 14 - 11
    15 - 42 - 17/10/2014 - (vide) - 12

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Au lieu de faire une requête d'insertion, tu crées des requêtes de mise à jour.
    Exemple dans le même formulaire, tu ajoutes les champs DateRFPDebut et DateRFPFin et un bouton pour encoder tes recettes RFP avec le code suivant :
    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
    Dim semaineRFP As Integer
    Dim idate As Date
    Dim strsql As String
    'Vérifier que les valeurs saisies sont bien des dates
    If IsDate(Me.DateRFPDebut) And IsDate(Me.DateRFPFin) Then
    'Vérifier l'ordre des dates saisies
        If Format(Me.DateRFPDebut, "mm/dd/yyyy") < Format(Me.DateRFPFin, "mm/dd/yyyy") Then
            'Boucler la valeur avec un pas de 7
            semaineRFP = 1
            For idate = Me.DateRFPDebut To Me.DateRFPFin Step 7
                'Créer la requête SQL de mise à jour
                strsql = "UPDATE T_DateDeSuivi SET T_DateDeSuivi.CodeDateSuivi_RFP =" & semaineRFP _
                        & " WHERE T_DateDeSuivi.SemaineNum=" & Semaine(idate)
                DoCmd.RunSQL strsql
                semaineRFP = semaineRFP + 1
            Next idate
        Else
            MsgBox " La date de fin est antérieure à la date de début ! corrigez !"
            Exit Sub
        End If
    Else
        MsgBox "Vous n'avez pas saisi des dates !"
        Exit Sub
    End If
    Me.T_DateDeSuivi.Requery
    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par madefemere Voir le message
    Bonsoir,

    Au lieu de faire une requête d'insertion, tu crées des requêtes de mise à jour.
    Exemple dans le même formulaire, tu ajoutes les champs DateRFPDebut et DateRFPFin et un bouton pour encoder tes recettes RFP avec le code suivant :
    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
    Dim semaineRFP As Integer
    Dim idate As Date
    Dim strsql As String
    'Vérifier que les valeurs saisies sont bien des dates
    If IsDate(Me.DateRFPDebut) And IsDate(Me.DateRFPFin) Then
    'Vérifier l'ordre des dates saisies
        If Format(Me.DateRFPDebut, "mm/dd/yyyy") < Format(Me.DateRFPFin, "mm/dd/yyyy") Then
            'Boucler la valeur avec un pas de 7
            semaineRFP = 1
            For idate = Me.DateRFPDebut To Me.DateRFPFin Step 7
                'Créer la requête SQL de mise à jour
                strsql = "UPDATE T_DateDeSuivi SET T_DateDeSuivi.CodeDateSuivi_RFP =" & semaineRFP _
                        & " WHERE T_DateDeSuivi.SemaineNum=" & Semaine(idate)
                DoCmd.RunSQL strsql
                semaineRFP = semaineRFP + 1
            Next idate
        Else
            MsgBox " La date de fin est antérieure à la date de début ! corrigez !"
            Exit Sub
        End If
    Else
        MsgBox "Vous n'avez pas saisi des dates !"
        Exit Sub
    End If
    Me.T_DateDeSuivi.Requery
    Cordialement,

    Bonjour,

    J'ai tenté mais ca ne fonctionne pas il y a une erreur "3464"


    Mais je ne suis pas sur que mon besoin soit clair et bien compris
    Je vais davantage le détaillé

    L'utilisateur entre 2 périodes ("Date de recette RIM" et "Date de recette RIM"). Sachant que les périodes peuvent être "à cheval" les une avec les autres

    Date de Recette RFP
    - Date début : 11/07/2014
    - Date de fin : 10/10/2014

    Date de recette RIM
    - Date début : 01/08/2014
    - Date de fin : 17/10/2014

    Je souhaite que la requête permet de créer une ligne par date avec n° de Semaine + date
    et je souhaite que la Colonne CodeDateSuivi_RFP soit numéroté à partir de la date de début RFP de 1 (+1 à chaque ligne) jusqu'à la date de fin RFP
    et je souhaite que la Colonne CodeDateSuivi_RIM soit numéroté à partir de la date de début RIM de 1 (+1 à chaque ligne) jusqu'à la date de fin RIM



    Merci beaucoup pour votre aide
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip BD.zip (49,6 Ko, 85 affichages)

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Comme ça??
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    merci c'est exactement ca !!

    j'ai regardé rapidement c'est parfait

    le seul hic c'est si l'utilisateur se trompe il faudrait ecraser les donnée par les nouvelles. Or la macro crée de nouvelle ligne à chaque fois au lieu d'écraser les ancienne données
    Il faudrait qu'au clic la macro vide la colonne

    quel est le code a ajouter pour vider une colonne ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/01/2015, 06h55
  2. [XL-2007] Compter le nombres de cellules différentes d'une colonne en fonction de date
    Par lorin.maxime dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/09/2013, 11h31
  3. Réponses: 6
    Dernier message: 06/06/2013, 15h04
  4. Largeur d'une area en fonction de dates
    Par habasque dans le forum MATLAB
    Réponses: 2
    Dernier message: 21/05/2012, 14h25
  5. [AC-2007] Paramétrer l'affichage d'une messagebox en fonction de date
    Par Imitator92 dans le forum IHM
    Réponses: 4
    Dernier message: 01/09/2009, 19h53

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