Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Transformer champ texte en date

33 réponses
Avatar
Patexocet
Bonjour,


J'ai dans une requ=EAte un champ "Ann=E9e" 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=E9=E9e
sera toujours le premier du mois.

Je veux cr=E9er dans cette requ=EAte un champ MaDate: qui cr=E9=E9e la date
sous la forme 01/03/2008

J'essaye avec Madate: S=E9rieDate ( "01"; [Mois]; [Ann=E9e]) mais sans
succ=E8s.

Merci

10 réponses

1 2 3 4
Avatar
Gilbert
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" a écrit dans le message de
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
Avatar
Patexocet
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é ;-)
Avatar
Patexocet
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
Avatar
Michel__D
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).
Avatar
Patexocet
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
Avatar
Michel__D
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 ?
Avatar
CErnst
essayez
cdate("01" & "/" & [Mois] & "/" & [Année])

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



"Patexocet" a écrit dans le message de 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
Avatar
Patexocet
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
Avatar
Michel__D
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);
Avatar
Patexocet
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);


1 2 3 4