Transformer champ texte en date

Le
Patexocet
Bonjour,


J'ai dans une requête un champ "Année" au format texte qui contient
"2008", un autre champ texte "Mois" qui contient le nom des pois
"mars" par exemple, il n'y a pas de champ "Jour" car la date créée
sera toujours le premier du mois.

Je veux créer dans cette requête un champ MaDate: qui créée la date
sous la forme 01/03/2008

J'essaye avec Madate: SérieDate ( "01"; [Mois]; [Année]) mais sans
succès.

Merci
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 4
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilbert
Le #18260121
Bonjour,

Je ne crois pas qu'il existe de fonction te donnant le numéro du mois à
partir de son nom dans Access.
Alors je t'en ai fait une.
Tu l'utilises ensuite comme ça
Madate:SérieDate([Année];MoisEnChiffre([Mois]);"1")


Public Function MoisEnChiffre(NomMois As String) As Long
Dim TableauMois(14, 1)
Dim i As Long

TableauMois(0, 0) = "Janvier"
TableauMois(0, 1) = 1
TableauMois(1, 0) = "Février"
TableauMois(1, 1) = 2
TableauMois(2, 0) = "Fevrier"
TableauMois(2, 1) = 2
TableauMois(3, 0) = "Mars"
TableauMois(3, 1) = 3
TableauMois(4, 0) = "Avril"
TableauMois(4, 1) = 4
TableauMois(5, 0) = "Mai"
TableauMois(5, 1) = 5
TableauMois(6, 0) = "Juin"
TableauMois(6, 1) = 6
TableauMois(7, 0) = "Juillet"
TableauMois(7, 1) = 7
TableauMois(8, 0) = "Août"
TableauMois(8, 1) = 8
TableauMois(9, 0) = "Aout"
TableauMois(9, 1) = 8
TableauMois(10, 0) = "Septembre"
TableauMois(10, 1) = 9
TableauMois(11, 0) = "Octobre"
TableauMois(11, 1) = 10
TableauMois(12, 0) = "Novembre"
TableauMois(12, 1) = 11
TableauMois(13, 0) = "Décembre"
TableauMois(13, 1) = 12
TableauMois(14, 0) = "Decembre"
TableauMois(14, 1) = 12

For i = 0 To 14
If TableauMois(i, 0) = NomMois Then
MoisEnChiffre = TableauMois(i, 1)
Exit Function
End If
Next i
'Renvoie 1 si faute d'orthographe dans le nom. Si on met 0 on aura une
erreur plus tard
MoisEnChiffre = 1
End Function

--
Cordialement,

Gilbert


"Patexocet" news:
Bonjour,


J'ai dans une requête un champ "Année" au format texte qui contient
"2008", un autre champ texte "Mois" qui contient le nom des pois
"mars" par exemple, il n'y a pas de champ "Jour" car la date créée
sera toujours le premier du mois.

Je veux créer dans cette requête un champ MaDate: qui créée la date
sous la forme 01/03/2008

J'essaye avec Madate: SérieDate ( "01"; [Mois]; [Année]) mais sans
succès.

Merci
Patexocet
Le #18260231
Merci de tout coeur Gilbert ta fonction fonctionne au top, je vais
enfin pouvoir poursuivre mon problème de période de dépense sur leque l
je bute depuis des mois. Et merci à Michel_D car c'est après son
message que j'ai eu la réflexion de me dire qu'il fallait transformer
mes données en champ date voir:
http://groups.google.com/group/microsoft.public.fr.access/browse_thread/thr ead/9d7f2f27bbde9b7f?hl=fr#

Une bonne et heureuse année à vous tous.

Pat, qui va enfin pouvoir bosser alors qu'il est en congé ;-)
Patexocet
Le #18260521
Le but final est de regrouper les enregistrements de dépenses
mensuelles par période de 12 mois, de février 2007 à janvier 2008 par
exemple .

J'ai un formulaire dans lequel, via une liste déroulante, je
sélectionne le mois "février" puis l'année "2008". Comment faire pour
que la requête, dans lequel j'ai inclus ta fonction, me retourne tous
les enregistrements ayant comme date de dépense celle comprise entre
le 1/02/2007 et le 31/01/2008 soit les dépenses du 1/02/2007,
1/03/2007, 1/04/2007 etc, sachant qu'il pourrait y avoir un mois dans
cette période ou il n'y a pas de dépenses.

Si j'abuse ne pas hésiter à taper ;-)

Pat
Michel__D
Le #18261121
Bonjour,

Patexocet a écrit :
Le but final est de regrouper les enregistrements de dépenses
mensuelles par période de 12 mois, de février 2007 à janvier 2008 par
exemple .

J'ai un formulaire dans lequel, via une liste déroulante, je
sélectionne le mois "février" puis l'année "2008". Comment faire pour
que la requête, dans lequel j'ai inclus ta fonction, me retourne tous
les enregistrements ayant comme date de dépense celle comprise entre
le 1/02/2007 et le 31/01/2008 soit les dépenses du 1/02/2007,
1/03/2007, 1/04/2007 etc, sachant qu'il pourrait y avoir un mois dans
cette période ou il n'y a pas de dépenses.

Si j'abuse ne pas hésiter à taper ;-)



Si j'ai un conseil à te donner, utilise plutot un champ Date au niveau
de la table au lieu de tes deux champs (mois et année).
Patexocet
Le #18261511
Malheureusement, ce n'est pas possible de modifier le système. Lorsque
l'utilisateur enregistre une dépense, il peut choisir librement un
mois et une année pour imputer cette dépense. Elle est stockée dans
une table, le mois au format texte ChampMois: "janvier" et l'année au
format numérique ChampAnnee: "2008".

Jusqu'à présent, je regroupais via une requête, les dépenses par an née
civile avec un seul critère 2008, par exemple, émanant d'un champ de
formulaire.

Maintenant, je souhaite que ce regroupement puisse être fait pour une
période de 12 mois (mais pas forcément par année civile de janvier à
décembre) mais de "mars" à à "février" par exemple.

Avec ton info et l'aide de Gilbert j'ai maintenant une requête qui
contient un champ supplémentaire "DateDepense" et qui transforme mars
et 2008 en 01/03/2008

Comment faire pour regrouper les dépenses du 1/03/2007 au 1/02/2008
via un formulaire contenant deux listes déroulantes l'une contenant le
mois "février" et l'autre contenant l'année "2008"

Je chipote sans succès et je te remercie de t'être penché sur mon
problème.

Pat
Michel__D
Le #18262101
Bonjour,

Patexocet a écrit :
Malheureusement, ce n'est pas possible de modifier le système. Lorsque
l'utilisateur enregistre une dépense, il peut choisir librement un
mois et une année pour imputer cette dépense. Elle est stockée dans
une table, le mois au format texte ChampMois: "janvier" et l'année au
format numérique ChampAnnee: "2008".

Jusqu'à présent, je regroupais via une requête, les dépenses par année
civile avec un seul critère 2008, par exemple, émanant d'un champ de
formulaire.

Maintenant, je souhaite que ce regroupement puisse être fait pour une
période de 12 mois (mais pas forcément par année civile de janvier à
décembre) mais de "mars" à à "février" par exemple.

Avec ton info et l'aide de Gilbert j'ai maintenant une requête qui
contient un champ supplémentaire "DateDepense" et qui transforme mars
et 2008 en 01/03/2008

Comment faire pour regrouper les dépenses du 1/03/2007 au 1/02/2008
via un formulaire contenant deux listes déroulantes l'une contenant le
mois "février" et l'autre contenant l'année "2008"

Je chipote sans succès et je te remercie de t'être penché sur mon
problème.



Tu veux dire qu'il t'es impossible d'agir sur la structure de ta base
ou que tu ne veux pas changer la façon donc les utilisateurs
saisissent les informations ?
CErnst
Le #18262091
essayez
cdate("01" & "/" & [Mois] & "/" & [Année])

? cdate("01" & "/" & "Mars" & "/" & "2008")
01/03/08



"Patexocet"
Bonjour,


J'ai dans une requête un champ "Année" au format texte qui contient
"2008", un autre champ texte "Mois" qui contient le nom des pois
"mars" par exemple, il n'y a pas de champ "Jour" car la date créée
sera toujours le premier du mois.

Je veux créer dans cette requête un champ MaDate: qui créée la date
sous la forme 01/03/2008

J'essaye avec Madate: SérieDate ( "01"; [Mois]; [Année]) mais sans
succès.

Merci
Patexocet
Le #18262971
Merci Michel pour ta réponse. J'ai créé un champ au format date dans
ma table "Depense" puis une requête ajout qui crée un champ date au
format texte (code fourni par Gilbert) et qui l'ajoute à ma table
"Depense" dans le champ nouvellement créé au format date. J'ai donc un
vrai champ date dans ma table.

Comment faire maintenant pour regrouper les dépenses du 1/03/2007 au
1/02/2008 via un formulaire contenant deux listes déroulantes; l'une
contenant le mois "février" et l'autre contenant l'année "2008"

Merci delphine pour ta suggestion , j'avais commencé par ça puis je me
suis orienté vers le champ date ce qui semble être ok maintenant.
CErnst je n'ai pas testé ta solution car cette de Gilbert fonctionne à
merveille mais merci pour ton aide.

Pat
Michel__D
Le #18264771
Re,

Patexocet a écrit :
Merci Michel pour ta réponse. J'ai créé un champ au format date dans
ma table "Depense" puis une requête ajout qui crée un champ date au
format texte (code fourni par Gilbert) et qui l'ajoute à ma table
"Depense" dans le champ nouvellement créé au format date. J'ai donc un
vrai champ date dans ma table.

Comment faire maintenant pour regrouper les dépenses du 1/03/2007 au
1/02/2008 via un formulaire contenant deux listes déroulantes; l'une
contenant le mois "février" et l'autre contenant l'année "2008"



Essaye avec cette requête (à adapter) :

SELECT SUM(LaTable.LeChampDepense) AS DepensesAnnuelle
FROM LaTable
WHERE LaTable.LeChampDate BETWEEN
DateAdd("m",1,CDate("1 " & Forms!LeFormulaire!LeControleMois & " " & Forms!LeFormulaire!LeControleAnnee - 1))
And CDate("1 " & Forms!LeFormulaire!LeControleMois & " " & Forms!LeFormulaire!LeControleAnnee);
Patexocet
Le #18267061
On 31 déc 2008, 20:12, Michel__D wrote:
Re,

Patexocet a écrit :

> Merci Michel pour ta réponse. J'ai créé un champ au format date d ans
> ma table "Depense" puis une requête ajout qui crée un champ date au
> format texte (code fourni par Gilbert) et qui l'ajoute à ma table
> "Depense" dans le champ nouvellement créé au format date. J'ai donc un
> vrai champ date dans ma table.

> Comment faire maintenant pour regrouper les dépenses du 1/03/2007 au
> 1/02/2008  via un formulaire contenant deux listes déroulantes; l'u ne
> contenant le  mois "février" et l'autre contenant l'année "2008"

Essaye avec cette requête (à adapter) :

SELECT SUM(LaTable.LeChampDepense) AS DepensesAnnuelle
FROM LaTable
WHERE LaTable.LeChampDate BETWEEN
  DateAdd("m",1,CDate("1 " & Forms!LeFormulaire!LeControleMois & " " & Forms!LeFormulaire!LeControleAnnee - 1))
  And CDate("1 " & Forms!LeFormulaire!LeControleMois & " " & Forms!LeFo rmulaire!LeControleAnnee);


Publicité
Poster une réponse
Anonyme