langenbrunner
Messages postés5Date d'inscriptionmardi 14 juin 2005StatutMembreDernière intervention23 décembre 2005
-
21 juil. 2005 à 15:30
langenbrunner
Messages postés5Date d'inscriptionmardi 14 juin 2005StatutMembreDernière intervention23 décembre 2005
-
25 juil. 2005 à 12:06
Bonjour,
J'utilise Access et j'aimerais faire une requete qui m'affiche tous les mois compris entre 2 dates saisies dans un formulaire.
Ce n'est pas Datediff() mais je pense que cette fonction pourrait etre utile.
Que dois je mettre dans le VBA ?
Quelqu'un peut m'aider ?
cs_David_wklw
Messages postés48Date d'inscriptionsamedi 18 novembre 2000StatutMembreDernière intervention24 mars 2006 21 juil. 2005 à 15:39
Es-tu sur de devoir utiliser du VBA ? A^s-tu essayé avec plusieurs critères dans ta requête en prenant garde de mettre les arguments de type date entre # comme #10/2/2005#.
Je ne saisis pas exactement ce que tu entends par afficher tous les mois entre deux dates. As-tu des mois en type texte dans une table ?
langenbrunner
Messages postés5Date d'inscriptionmardi 14 juin 2005StatutMembreDernière intervention23 décembre 2005 21 juil. 2005 à 15:49
En fait depuis un formulaire ACCESS, il y a 2 zones de texte.
Tu saisis une date dans chacune des zones du type jj/mm/aaaa.
Tu cliques sur un bouton lance une requete faisant apparaitre tous les mois compris entre ces 2 dates.
exemple : 01/01/2000 et 30/05/2000 me fasse apparaitre janv - fev - mars- avril - mai.
Tu disais une table avec des mois en texte. Le truc est : est-ce qu'il va comprendre que fév - mars - avril sont compris entre janv et mai ?
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 21 juil. 2005 à 16:57
Tu pourrais sans doute faire quelque chose de simple.
Tes dates sont toujours du format jj/mm/aaaa ?
Tu récupères dans une variable Début le "mm" de ta date
Dans une variable Fin le "mm" de la date
avec la commande Mid(Date, 4,2)
Tu aurais donc par exemple : Début 01 et Fin 05
Tu crées une table toute simple avec un numéro auto et le mois en face :
Num - Mois
01 - Janv
02 - Fév
...
IL ne te reste plus qu'à créer une petite requête pour afficher le mois en fonction des numéros ...
ZoneTexte.text = ""
For x= Début to Fin step 1
'Tu ouvres un recordset avec une requête de ce style :
"SELECT Mois FROM Table WHERE Num=" & x
ZoneTexte.text = ZoneTexte.text & " - " & Rcdset.Fields("Mois")
Next
Rcdset.close
Ca devrait fonctionner, mais je n'ai pas le temps (ni le courage je l'avoue) de tester ça tout de suite :p
Molenn
Vous n’avez pas trouvé la réponse que vous recherchez ?
langenbrunner
Messages postés5Date d'inscriptionmardi 14 juin 2005StatutMembreDernière intervention23 décembre 2005 22 juil. 2005 à 10:14
Bon j'y suis arrivé en créant une nouvelle table mois :
SELECT [mois].[le_mois]
FROM mois
WHERE ((([mois].[id_mois]) Between Formulaires!STATS_PAR_DATE!mois_deb And Formulaires!STATS_PAR_DATE!mois_fin));
Le truc maintenant est de rajouter ça dans ma requête d'analyse croisée.
A la base j'ai ça qui marche mais qui affiche tous les mois de l'année :
TRANSFORM Nz(Sum([AC_origine_union].[Total]),"") AS SommeDeTotal
SELECT [AC_origine_union].[MODE_RECEPTION] AS ORIGINE, Nz(Sum([AC_origine_union].[Total]),"0") AS [Total colonne]
FROM AC_origine_union
GROUP BY [AC_origine_union].[MODE_RECEPTION], [AC_origine_union].[ORDRE]
ORDER BY [AC_origine_union].[ORDRE]
PIVOT Format([DATE_RECL],"mmm") In ("janv","févr","mars","avr","mai","juin","juil","août","sept","oct","nov","déc");
et si je remplace la dernière ligne par ça ! bien sur ça marche pas :
PIVOT Format([DATE_RECL],"mmm") In (SELECT le_mois FROM mois WHERE mois.id_mois Between [AC_origine_union].[date_debut] And [AC_origine_union].[date_fin]);
J'ai droit à "entetes de colonnes fixes non valide"
vinkaa
Messages postés3Date d'inscriptionmardi 19 août 2003StatutMembreDernière intervention22 juillet 2005 22 juil. 2005 à 18:55
Bonjour,
Une solution pourrait être de traiter la requête danalyse croisée sous forme de texte.
Ensuite, il est possible soit de créer une requête, soit dexécuter directement la phrase SQL.
'Création d'une requête Access
'Les dates "01/02/2005" & "01/05/2005" peut être facilement remplacées
'par les valeurs du formulaire
Public Function CreateXQuery() As Boolean
On Error GoTo Err_Label
Dim dbs As DAO.Database, qdf As DAO.QueryDef
Dim strSQL As String
strSQL = RequeteX("01/02/2005", "01/05/2005")
If Len(strSQL) > 0 Then
Set dbs = Application.CurrentDb
Set qdf = dbs.CreateQueryDef("RAC_MyQuery", strSQL)
CreateXQuery = True
End If
Exit_Label:
Set qdf = Nothing
Set dbs = Nothing
Exit Function
Err_Label:
CreateXQuery = False
Resume Exit_Label
End Function
'Création de l'ensemble des mois à partir de deux dates
Public Function MonthsSet(ByVal dtmStartDate As Date, ByVal dtmEndDate As Date) As String
On Error GoTo Err_Label
Dim lngMonth As Long
For lngMonth = Month(dtmStartDate) To Month(dtmEndDate)
If Len(MonthsSet) > 0 Then MonthsSet = MonthsSet & ","