Problème tri de dates par année puis mois

Problème tri de dates par année puis mois - VB/VBA/VBS - Programmation

Marsh Posté le 11-08-2006 à 10:08:51    

Bonjour,  
j'ai fait une macro Excel qui s'ouvre grâce à Access. Celle-ci puise des informations dans une table d'Access par le biais d'une requête. Dans ma requête je fais une sélection sur une date pour n'avoir que le mois slash l'année. Le problème est que je n'arrive pas à ordonner les dates obtenues dans mon tableau. Je voudrais pouvoir avoir un tri sur l'année puis le mois pour pouvoir faire des graphiques.
Ma requête est celle-ci :
 

Code :
  1. MonScript = "SELECT Count(Dossier.NoDossier) AS CompteDeNoDossier, Right(Dossier.DateEmission, 7) as annee, Sum(Dossier.MontantSubvention) AS SommeDeMontantSubvention
  2. FROM Dossier INNER JOIN CP ON Dossier.NoDossier = CP.NoDossier
  3. WHERE (((CP.DateCommission) Is Null)
  4. And ((dossier.DateDossierComplet) >= '02/12/2005'))
  5. AND (Year(dossier.DateEmission)like '2006')
  6. GROUP BY Dossier.DateEmission;"


 
Merci pour votre aide.

Reply

Marsh Posté le 11-08-2006 à 10:08:51   

Reply

Marsh Posté le 11-08-2006 à 10:11:27    

ORDER BY Dossier.DateEmission à la fin de ta requete , comme ca les données sont déja classées, Non?

Reply

Marsh Posté le 11-08-2006 à 10:12:21    

Ben non justement le tri ne se fait pas

Reply

Marsh Posté le 11-08-2006 à 10:13:01    

ma date à la fin est du type 08/2006 si ça peut aider à comprendre.

Reply

Marsh Posté le 11-08-2006 à 10:16:54    

le champs contenant la date dans ta table c'est bien un type date / datetime ?  
Il est bien en Francais ?  
Et un  
SELECT Dossier.DateEmission
FROM Dossier
ORDER BY Dossier.DateEmission
 
ca donne quoi ?  

Reply

Marsh Posté le 11-08-2006 à 10:19:49    

bon alors j'ai réuci à ordonner par année (ORDER BY Right(DateEmission,4) ) mais pas par mois :s

Reply

Marsh Posté le 11-08-2006 à 10:20:33    

non c'est un type texte

Reply

Marsh Posté le 11-08-2006 à 10:22:09    

Citation :

non c'est un type texte


 
Ben ok voila le problème donc...  
Dans ce cas la essaye voir un truc du genre  
 
SELECT ***
**
**
ORDER BY DATE(Dossier.DateEmission) ?!?

Reply

Marsh Posté le 11-08-2006 à 10:24:19    

ça coince :s

Reply

Marsh Posté le 11-08-2006 à 10:28:21    

en faisant ceci ça fonctionne mais je n'est pas un réel regroupement de dates (je peus avoir 5 fois 02/2005 par exemple) ?  
 
SELECT Count(Dossier.NoDossier) AS CompteDeNoDossier,  
Right(Dossier.DateEmission,7) AS annee,  
Sum(Dossier.MontantSubvention) AS SommeDeMontantSubvention,  
Format([Dossier]![DateEmission],"yyyymm" ) AS DateEmissionTri
FROM Dossier INNER JOIN CP ON Dossier.NoDossier = CP.NoDossier
WHERE (((CP.DateCommission) Is Null)  
AND (([dossier].[DateDossierComplet])>='02/12/2005')  
AND ((Year([dossier].[DateEmission])) Like '2006'))
GROUP BY Format([Dossier]![DateEmission],"yyyymm" ), Dossier.DateEmission
ORDER BY Format([Dossier]![DateEmission],"yyyymm" );
 

Reply

Marsh Posté le 11-08-2006 à 10:28:21   

Reply

Marsh Posté le 11-08-2006 à 10:29:51    

c'est peut etre pas Date le nom de la fonction ! ?  

Reply

Marsh Posté le 11-08-2006 à 10:31:58    

et en supprimant le FORMAT(***) dans le Group By  
 
OU  
 
en supprimant le Dossier.dateEmission dans le Group BY ?

Reply

Marsh Posté le 11-08-2006 à 10:36:31    

non plus

Reply

Marsh Posté le 11-08-2006 à 10:37:31    

je pense que cela vient de la DateCommission seulement je ne vois pas du tout comment faire le vrai regroupement :s

Reply

Marsh Posté le 18-08-2006 à 14:14:44    

rob-92 a écrit :

Bonjour,  
j'ai fait une macro Excel qui s'ouvre grâce à Access. Celle-ci puise des informations dans une table d'Access par le biais d'une requête. Dans ma requête je fais une sélection sur une date pour n'avoir que le mois slash l'année. Le problème est que je n'arrive pas à ordonner les dates obtenues dans mon tableau. Je voudrais pouvoir avoir un tri sur l'année puis le mois pour pouvoir faire des graphiques.
Ma requête est celle-ci :
 
 
 
Merci pour votre aide.


 
Il faut que tu reprennes ta requete en ajoutant order by et reformatant ton champs texte.
Comme ce n'est pas un chalmp date pas de format
 
Mais substring, left ou right en reconcatenant les deux
 
UN truc du genre
 

MonScript = "SELECT Count(Dossier.NoDossier) AS CompteDeNoDossier, Right(Dossier.DateEmission, 7) as annee, Sum(Dossier.MontantSubvention) AS SommeDeMontantSubvention  
FROM Dossier INNER JOIN CP ON Dossier.NoDossier = CP.NoDossier  
WHERE (((CP.DateCommission) Is Null)  
And ((dossier.DateDossierComplet) >= '02/12/2005'))  
AND (Year(dossier.DateEmission)like '2006')  
GROUP BY Dossier.DateEmission
ORDER By RIGHT(Dossier.DateEmission,4) || LEFT(Dossier.DateEmission,2);"


Message édité par dlaumor le 18-08-2006 à 14:17:42
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed