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 :

Convertir une date en numéro de semaine


Sujet :

Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Convertir une date en numéro de semaine
    Bonjour

    j'ai crée une table en important des données, la table est composée de 4 chanmps dont un champ pour la date , je souhaite que pour chaque enregistrement obtenir un numero de semaine (5 ème champ) dans la même table.

    je suis plus excel que acces, je pense que je dois m'adapter sur des nouvelles logiques.

    est ce que c'est simple ou c'est compliqué à developper.

    merci pour vos réponses.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 370
    Points : 23 844
    Points
    23 844
    Par défaut
    Avant Access 2010 il n'est pas possible de faire des calculs directement dans une table.

    La solution classique consiste à faire une requête qui fait les calculs nécessaire et ne garder dans la table de base que des données brutes mais dans ton cas je procéderai ainsi :
    1. Chargement des données dans la table
    2. Lancement d'une requête de MAJ qui enregistre le résultat du calcul dans un champ de la table.

    Sauf si tu change lavaleur contenue dans le champ date qui sert aux calcul de la semaine, dans ce cas là conserve la table et une requête d'interrogation qui fait le calcul.

    Pour le calcul : utilise Format avec l'option w qui va te donner un nombre compris entre 1 et 53. Attention le calcul dépent d'un paramêtre qui détermine la 1ere semaine de l'année. Regarde l'aide de format et fait des essais avec un calendrier pour vérifier que c'est bien le numéro qui te convient.

    Pour la requête de MAj utilise l'assistant d'Access tu ne devrait pas rencontrer de difficultés majeures.

    Si tu besoin de olus d'aide, n'hésite pas à demander.

    A+

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Avant Access 2010 il n'est pas possible de faire des calculs directement dans une table.

    La solution classique consiste à faire une requête qui fait les calculs nécessaire et ne garder dans la table de base que des données brutes mais dans ton cas je procéderai ainsi :
    1. Chargement des données dans la table
    2. Lancement d'une requête de MAJ qui enregistre le résultat du calcul dans un champ de la table.

    Sauf si tu change lavaleur contenue dans le champ date qui sert aux calcul de la semaine, dans ce cas là conserve la table et une requête d'interrogation qui fait le calcul.

    Pour le calcul : utilise Format avec l'option w qui va te donner un nombre compris entre 1 et 53. Attention le calcul dépent d'un paramêtre qui détermine la 1ere semaine de l'année. Regarde l'aide de format et fait des essais avec un calendrier pour vérifier que c'est bien le numéro qui te convient.

    Pour la requête de MAj utilise l'assistant d'Access tu ne devrait pas rencontrer de difficultés majeures.

    Si tu besoin de olus d'aide, n'hésite pas à demander.

    A+

    j'ai bien compris la logique mais j'ai essayé de l'appliquer sans aucun résultat! est ce que tu peux m'aider à travers un exemple (en pièce joint)

    je veux voir à quoi resemble cette requête comment elle est parametrée.

    merci encore pour ton aide précieuse.
    a+

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 370
    Points : 23 844
    Points
    23 844
    Par défaut
    Ça ressemblerai à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE NomTable SET NomTaTable.NomTonChampNoSemaine = Format ( NomTaTable.NomTonChampDate, "w", 2, 1);
    A+

  5. #5
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,

    La fonction PartDate permet de faire cette conversion de date en No de semaine. Vous écrivez cette fonction dans la ligne Source contrôle du txtBox qui doit contenir le NoSemaine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =PartDate("ww";[NomChampDate];2;2)
    ww c'est le paramètre de la fonction pour avoir le n° de semaine
    NomChampDate est remplacé par le nom du txtBox NoSem par exemple
    premier 2 pour déterminer que le ludi est le premier jour de la semaine
    second 2 pour déterminer que la première semaine de l'année contient au moins quatre jours de la nouvelle année.
    L'aide d'access sur DatePart (PartDate dans version française) vous donnera un complément d'infos si nécessaire

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 370
    Points : 23 844
    Points
    23 844
    Par défaut
    Merci rjamin, je ne suis pas habité à utiliser PartDate.

  7. #7
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 871
    Points : 58 447
    Points
    58 447
    Billets dans le blog
    44
    Par défaut
    Bonjour,

    juste pour complément, une fonction à copier dans un module :

    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
    Public Function Semaine(LaDate As Variant) As Variant
    '---------------------------------------------------------------------------------------
    ' Procedure : Semaine
    ' Date : vendredi 21 décembre 2007 13:56
    ' Auteur : Maxence Hubiche (mhubiche@club-internet.fr - 06.18.61.14.35)
    ' Objet : Renvoie le numéro de la semaine pour le calendrier français
    ' Spec : Cette fonctino empèche le débordement en semaine 53, en mettant les jours
    ' de la semaine 53 en semaine 1
    ' Retour : Renvoie un Byte (n° de la semaine) ou Null si l'argument n'était pas une
    ' date
    '---------------------------------------------------------------------------------------
    '
    Dim bytTemp As Byte
    If IsDate(LaDate) Then
    bytTemp = CByte(DatePart("ww", LaDate, vbMonday, vbFirstFourDays)) Mod 53
    If bytTemp = 0 Then bytTemp = 1
    Semaine = bytTemp
    Else
    Semaine = Null
    End If
    End Function
    Code grappillé dans :
    http://mhubiche.developpez.com/vba/f...ions/datetime/

    Exemple d’utilisation dans une requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT champ1, champ2, champ3, LaDate, Semaine(LaDate) FROM LaTable;

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par rjamin Voir le message
    Bonjour,

    La fonction PartDate permet de faire cette conversion de date en No de semaine. Vous écrivez cette fonction dans la ligne Source contrôle du txtBox qui doit contenir le NoSemaine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =PartDate("ww";[NomChampDate];2;2)
    ww c'est le paramètre de la fonction pour avoir le n° de semaine
    NomChampDate est remplacé par le nom du txtBox NoSem par exemple
    premier 2 pour déterminer que le ludi est le premier jour de la semaine
    second 2 pour déterminer que la première semaine de l'année contient au moins quatre jours de la nouvelle année.
    L'aide d'access sur DatePart (PartDate dans version française) vous donnera un complément d'infos si nécessaire
    Bonjour merci pour vos réponses,

    je suis débutant sur ce logiciel, donc je n'ai pas pu exploiter vos solutions.
    donc je vous joins en exemple ce que je veux obtenir comme résultat.
    dans la table test

    Je veux obtenir pour tout enregistrement du champ DATE un N° de Semaine.

    merci encore pour vos réponses si techniques
    Fichiers attachés Fichiers attachés

  9. #9
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Re,

    Ce n'est pas possible de faire cela directement dans la table, vous devez faire cela par l'intermédiaire d'un formulaire ou d'une requête. Créez un formulaire basé sur votre table à l'aide de l'assistant d'access et dans la propriété Source contrôle du txtBox NoSemaine mettez la formule DatePart telle qu'indiqué auparavant.

    A moins que vous n'ayez Access 2010 où là paraît-il iles possible de faire des calculs directement dans les tables.

    PS: Ne pas utiliser de mot clé pour les noms des champs. Vous prenez Date pour la colonne Date prenez plutôt Date_Achat ou Date_Vente ou autrechose mais pas date tout seul. Même remarque pour Nom prendre plutot Nom_Client ou Nom_Membre etc. Ce n'e sont que des conseils pas des obligations mais...

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par rjamin Voir le message
    Re,

    Ce n'est pas possible de faire cela directement dans la table, vous devez faire cela par l'intermédiaire d'un formulaire ou d'une requête. Créez un formulaire basé sur votre table à l'aide de l'assistant d'access et dans la propriété Source contrôle du txtBox NoSemaine mettez la formule DatePart telle qu'indiqué auparavant.

    A moins que vous n'ayez Access 2010 où là paraît-il iles possible de faire des calculs directement dans les tables.

    PS: Ne pas utiliser de mot clé pour les noms des champs. Vous prenez Date pour la colonne Date prenez plutôt Date_Achat ou Date_Vente ou autrechose mais pas date tout seul. Même remarque pour Nom prendre plutot Nom_Client ou Nom_Membre etc. Ce n'e sont que des conseils pas des obligations mais...
    avec tous ce qui a été proposé je n'ai pas réussi, quelqu'un peut réaliser sa solution dans cette pièce jointe
    merci bcp
    Fichiers attachés Fichiers attachés

  11. #11
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,

    Ci joint l'application de la formule.

    Le calculn'est pas enregistré dans la table, car en principe on enregistre pas ce qui peut être calculé dans une table de base de données, mais il y a moyen de le faire.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    le fichier joint est lecture seule, je ne vois aucune modif !! peux etre c un probleme d'enregistrement?

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

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    Bonjour,
    ci-joint en retour ta base modifiée
    1) Modif nom des champs : pas de champ avec des noms réservés (Date) où comportant des espaces.
    2) 2 manières proposées la première avec test_1 avec une requête – c’est la manière classique en évitant de mettre a jour la table.
    La deuxième avec un formulaire qui après le mise a jour du champ Date_J met le n° de semaine dans l’autre champ – voir l’évènement après mise a jour du champ Date_J.
    Fichiers attachés Fichiers attachés

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par LE VIEUX Voir le message
    Bonjour,
    ci-joint en retour ta base modifiée
    1) Modif nom des champs : pas de champ avec des noms réservés (Date) où comportant des espaces.
    2) 2 manières proposées la première avec test_1 avec une requête – c’est la manière classique en évitant de mettre a jour la table.
    La deuxième avec un formulaire qui après le mise a jour du champ Date_J met le n° de semaine dans l’autre champ – voir l’évènement après mise a jour du champ Date_J.
    merci pour la réponse

    juste une question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Num_Semaine = DatePart("ww", Me.Date_J, vbMonday, vbFirstFourDays)
    Me ? c'est quoi ? parceque ça bugg sur ma BD

    par quoi je peux le remplacer

    merci pour ta réponse

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

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    Bonjour,
    en VBA le mot clé Me. désigne l'objet dont le code est en cours d'exécution
    en l’occurrence dans le code donné il représente l’objet formulaire en cours d’exécution dans son module.
    Je ne me souviens pas à partir de quelle version ce mot clé est supporté, essayes de le supprimer s’il n’y a que « Me. » qui pose problème cela devrait marcher si ton code est bien dans le module du formulaire.
    a plus.

  16. #16
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    merci j'ai réussi finalement a obtenir ce que je veux, merci à tous pour votre aide 'Spécials remerciements à Mr Le Vieux' j'ai opté pour la 1ère solution. c'est plus simple.

    je profite pour relancer une question similaire mais cella porte sur le mois, comment obtenir le mois d'une date (quelle fonction) ?

    merci bcp

  17. #17
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,

    Si la date est dans Date_J

    donne lemois de cette date.

Discussions similaires

  1. [Crystal] transformation d'une date en numéro de semaine
    Par barna dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 24/03/2017, 10h41
  2. Convertir une date lunaire
    Par djeckelle dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 03/12/2004, 15h06
  3. []Comment convertir une date GMT en date vb ?
    Par Invité dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 11/08/2004, 17h01
  4. Convertir une date au format excel en datetime SQL server
    Par ALLB dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 20/07/2004, 12h28
  5. Convertir une date en type string
    Par ziboux dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 29/10/2003, 11h52

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