[access] changement du mois d'une date

Résolu/Fermé
lord_in Messages postés 58 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 29 octobre 2007 - 11 juin 2007 à 10:24
lord_in Messages postés 58 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 29 octobre 2007 - 12 juin 2007 à 10:57
bonjour,
J’ai un petit problème que je n’arrive pas à résoudre

Dans un formulaire je dois taper une date (X1= le jour, X2= le mois et X3= l’année)
Et je dois créer une table avec 19 champs avec la date et d’un champ à l’autre il n’y a que le mois qui doit changer. Mon problème c’est qu’il me met le mois 13 et il ne passe pas au 1er mois et l’année N+1

Voilà mon code
Option Compare Database
Dim mabase As Database, monindex As Index, monchamp As Object, matabledéf As TableDef
Dim T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 As Date


Private Sub Commande0_Click()

nouelletable
End Sub
Private Sub effacerlatable()
DoCmd.DeleteObject acTable, "creafichier"
End Sub
Private Sub nouelletable()
Set mabase = CurrentDb()
X1 = ZT_J.Value
X2 = ZT_M.Value
X3 = ZT_A.Value

T = X1 & " / " & X2 & " / " & X3
T1 = X1 & " / " & X2 + 1 & " / " & X3
T2 = X1 & " / " & X2 + 2 & " / " & X3
T3 = X1 & " / " & X2 + 3 & " / " & X3
T4 = X1 & " / " & X2 + 4 & " / " & X3
T5 = X1 & " / " & X2 + 5 & " / " & X3
T6 = X1 & " / " & X2 + 6 & " / " & X3
T7 = X1 & " / " & X2 + 7 & " / " & X3
T8 = X1 & " / " & X2 + 8 & " / " & X3
T9 = X1 & " / " & X2 + 9 & " / " & X3
T10 = X1 & " / " & X2 + 10 & " / " & X3
T11 = X1 & " / " & X2 + 11 & " / " & X3
T12 = X1 & " / " & X2 + 12 & " / " & X3
T13 = X1 & " / " & X2 + 13 & " / " & X3
T14 = X1 & " / " & X2 + 14 & " / " & X3
T15 = X1 & " / " & X2 + 15 & " / " & X3
T16 = X1 & " / " & X2 + 16 & " / " & X3
T17 = X1 & " / " & X2 + 17 & " / " & X3
T18 = X1 & " / " & X2 + 18 & " / " & X3
T19 = X1 & " / " & X2 + 19 & " / " & X3
T20 = X1 & " / " & X2 + 20 & " / " & X3
T21 = X1 & " / " & X2 + 21 & " / " & X3



Set matabledéf = mabase.CreateTableDef("creafichierfts")
Set monchamp = matabledéf.CreateField("Matl", dbLong)
matabledéf.Fields.Append monchamp
Set monchamp = matabledéf.CreateField("Mat description", dbText)
matabledéf.Fields.Append monchamp
Set monchamp = matabledéf.CreateField("name", dbText)
matabledéf.Fields.Append monchamp
Set monchamp = matabledéf.CreateField("fts " & T, dbLong)
matabledéf.Fields.Append monchamp
Set monchamp = matabledéf.CreateField("reel" & T, dbLong)
matabledéf.Fields.Append monchamp
Set monchamp = matabledéf.CreateField("fts " & T1, dbLong)
If X2 + 1 > 12 Then X2 = 1 And X3 = X3 + 1
matabledéf.Fields.Append monchamp
Set monchamp = matabledéf.CreateField("reel" & T1, dbLong)
matabledéf.Fields.Append monchamp
With matabledéf
Set monchamp = .CreateField("fts " & T2, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T3, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T4, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T5, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T6, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T7, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T8, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T9, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T10, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T11, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T12, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T13, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T14, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T15, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T16, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T17, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T18, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T19, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts " & T20, dbLong)
.Fields.Append monchamp
Set monchamp = .CreateField("fts" & T21, dbLong)
.Fields.Append monchamp
End With
mabase.TableDefs.Append matabledéf
MsgBox ("table est créée")

End Sub

merci de votre aide

1 réponse

blux Messages postés 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
11 juin 2007 à 11:30
Salut,

je serais toi, je serais plus strict dans la déclaration de mes variables :

Dim T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 As Date
Ici, seule T21 est une date, les autres sont en variant.

X1, X2 et X3 ne sont pas déclarés.

Est-on sûr qu'on reçoit des numériques dedans ? (Forcer avec X1= val(ZT_J.Value))
0
lord_in Messages postés 58 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 29 octobre 2007
11 juin 2007 à 12:14
J’ai changé la déclaration des variables
En fairt mon X1 c’est le jour et mon X2 c’est le mois et mon X3 c’est l’année
Maintenant la mis bascule de 12 à 1 mais en fait mais le mois reste à 1 après
Et c’est le jour qui bascule sur 13 et change d’un champ à l’autre

Je te mets un exemple
J’ai mis X1=1 et X2= 5 et X3=2005

Et voilà les champs qui me donne


Forecats01/05/2005
reel01/05/2005
Forecats01/06/2005
forecasts01/07/2005
forecasts01/08/2005
.
.
.
forecasts01/12/2005
forecasts13/01/2005
forecasts14/01/2005
.
.
.
.
forecasts26/01/2005

et j’ai déclaré X1, X2 e X3 as string

est ce que je peux déclarer X1 comme jour et X2 comme mois et X3 comme année ?????
et comment faire
Merci
0
blux Messages postés 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
11 juin 2007 à 13:12
On ne déclare pas X1, X2 et X3 comme jour, mois, année, on les déclare numérique (integer ou byte) et on s'assure que ce qu'on y met dedans est numérique...
0
lord_in Messages postés 58 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 29 octobre 2007 > blux Messages postés 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024
11 juin 2007 à 15:00
J’ai déclaré X1,X2 et X3 as integer
Et je suis assuré qu’on met des numéros dedans

Mais le problème c’est qu’il passe de la date
01/11/2005
A 01/12/2005 (ca c’est normal)
Et après à 13/01/2005 (alors que ca doit être 01/01/2006)
Et après 14/01/2005 (alors que ca doit être 01/02/2006)
0
blux Messages postés 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289 > blux Messages postés 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024
11 juin 2007 à 15:15
J'ai une piste :

Il faut mettre les dates entre #, car ACCESS cherche à les traiter en format anglais (mm/jj/aa)...

Donc quand tu as 01/12/2005, pour lui c'est 12 janvier qui passe à 13 janvier car il retrouve un format français...
0
lord_in Messages postés 58 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 29 octobre 2007 > blux Messages postés 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024
11 juin 2007 à 15:31
En fait t’as raison, c logique
Mais pour le # il ne me prends pas
Il me met un message d’erreur
‘Erreur de compilation’
‘Attendu : expression’


Voilà ce que j’ai mis
T = # X1 & " / " & X2 & " / " & X3


merci de ton aide
0