Access, N° de semaine [Fermé]

Signaler
-
 vdj -
Bonjour,

je souhaite sortir la semaine d'une date pour trier par année et semaine. Seulement en utilisant **format([DATE PRODUCTION];"yyyy/ww";2;3)**, j'obtiens 2010/9 .. 2010/20 etc. Je voudrais obtenir 2010/09 car en triant, 2010/20 se trouve avant 2010/9 de sorte que les semaines ne sont pas dans le bon ordre. Or la semaine 09 se classe avant la semaine 20 et la semaine 9 après la semaine 20. Avez-vous une idée pour me sortir de cet imbroglio. (donc deux chiffres impératifs pour la semaine)
Par avance merci.

9 réponses

Probablement un peu tard pour répondre, j'ai ajouté les lignes suivantes dans le code de la fonction semaine.
Si ça peut servir
If Semaine < 10 Then
Semaine = "0" & Semaine
Else
End If
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 78419 internautes nous ont dit merci ce mois-ci

Messages postés
23913
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 773
Salut,

il faut reformater ton résultat de semaine avec format("##",ww)...
Franchement, j'ai tout essayé et je ne vois pas ou mettre les # dans la formule. Merci par avance pour votre aide.
blux
Messages postés
23913
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 773
Il faut définir l'année et la semaine en tant que champs, les concaténer avec le slash et ensuite trier sur ce critère...

SELECT DATEPART([DATE PRODUCTION];"yyyy") & "/" & format("##",datepart([date production]);"ww"), champsuivant1, champsuivant2 FROM .... ORDER BY 1;
Bonjour,
PartDate("ee";[DATE PRODUCTION]) tu obtiendras le numéro de la semaine
J'ai pourtant fait une grosse BD mais là je cale complètement. Merci pour le renseignement quand même. Je vais réessayer
blux
Messages postés
23913
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 773
Tu cales sur quoi ?
Mets-nous ta requête qu'on jette un oeil...
SELECT Format([DATE PRODUCTION],"yyyy/ww",2,3) AS Semaine
FROM Tproductionbroyé
GROUP BY Format([DATE PRODUCTION],"yyyy/ww",2,3);

ma requête ne comporte qu'un champ : Semaine: Format([DATE PRODUCTION];"yyyy/ww";2;3) (mode SQL ci-dessus)

En fait, par la suite j'ai un formulaire basé sur la requête qui me permet de choisir dans une liste déroulante la semaine départ et dans une autre la semaine fin avec les stats correspondantes. Le problème c'est que la semaine 4 s'intercale entre la 39 et la 40 d'ou le fait que je veuille avoir 2010/04 et non 2010/4
La réponse est peut-être simple mais franchement je cale. En tout cas merci de d'intéresser à ma question.
blux
Messages postés
23913
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 773
Tu es sûre que tu as un GROUP BY, ça ne serait pas un ORDER BY ?

Je peux te proposer ça :

SELECT DATEPART([DATE PRODUCTION];"yyyy") & "/" & format("##",DATEPART([date production]);"ww") AS Semaine FROM Tproductionbroyé ORDER BY 1;

En supposant que date production est de type 'date'.

DATEPART est une fonction qui permet d'extraire des parties d'une date : jour, année, semaine, jour de la semaine...
Merci j'ai fini par réussir.
blux
Messages postés
23913
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 773
Et tu as fait quoi ?
Ca peut intéresser les autres...
En fait, j'ai besoin de choisir la semaine début et la semaine fin dans des listes déroulantes sur un formulaire. En cliquant sur la touche "voir les stats", je transfère les deux données dans une table de transition (modules puis évènements sur clic) et sur le formulaire suivant j'ai accès à toutes les stats pour la semaine du... à la semaine .... qui font référence aux données de la table de transition (donc plusieurs stats sans avoir à resaisir les dates). Mon problème est que si le format dans la table de transition n'est pas à "texte", j'ai un problème bloquant d'incompatibilité de données entre la date fabriquée normalement avec partdate et le format numérique ou date (tout essayé) de la table de transition (donc pas de transfert). Pas de problème en format texte mais le soucis est que 2010/4 se situe entre 2010/39 et 2010/40 donc impossible d'avoir les stats de la sem 39 à la sem 40 sans sem 4. Seule solution que j'ai trouvé pour avoir 2010/04 est une requête comme suit :
1) année: PartDate("yyyy";[DATE PRODUCTION])
2) Sem: VraiFaux(PartDate("ww";[DATE PRODUCTION];2;3)<10;0 & PartDate("ww";[DATE PRODUCTION];2;3);PartDate("ww";[DATE PRODUCTION];2;3))
3) période: [année] & "/" & [sem]
J'ai une 2ème requête qui regroupe les semaines pour la liste déroulante.
Toutes les stats hebdo sont basées sur des requêtes faites sur ce modèle et... ça marche avec classement dans le bon ordre même si ça fait un peu "bidouille".
En fait, je trouve la solution simple mais qu'est-ce que j'ai perdu comme temps et énergie pour arriver à ça...
blux
Messages postés
23913
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 773
As-tu regardé du côté de la fonction 'cdate' qui transforme une donnée en type date ?
Bonjour,

pour à peu près le même problème j'ai fait comme suit (je n'ai pas besoin du /) :

SELECT Format(DateMesure,'yyyy')+Format(Format(DateMesure,'ww'),"00") AS Semaine
FROM MaTable
GROUP BY NumId, Format(DateMesure,'yyyy')+Format(Format(DateMesure,'ww'),"00")
ORDER BY ORDER BY Format(DateMesure,'yyyy')+Format(Format(DateMesure,'ww'),"00");
Messages postés
1045
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
5 mars 2014
108
Bonsoir JEANNE,

Dans l'interface graphique vous collez ce qui suit dans une colonne de votre ligne "champ" :


Semaine: PartDate("yyyy";[<Datesaisie>]) & " / " & PartDate("W";[<Datesaisie>]) & " / " & PartDate("wW";[<Datesaisie>])

Il n'y a plus alors qu'à remplacer <Datesaisie> par le nom de votre champ date,
et après une ou deux retouches vous serez exaucée ...


Cordialement
blux
Messages postés
23913
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 773
Merci Jean_Jacques, mais Jeanne s'est sûrement lassée, puisqu'elle n'est pas revenue depuis novembre 2010, puisqu'elle a solutionné son problème...
Jean_Jacques
Messages postés
1045
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
5 mars 2014
108
C'est noté, merci Blux !
Bonjour
Pour extraire d'une date un format personalisé tu peux utilisee ceci



RefD1: Format([Date];"aaaa-mm-ee")
Tu as année le mois la semaine