[access] changement du mois d'une date

Résolu
lord_in Messages postés 44 Date d'inscription   Statut Membre -  
lord_in Messages postés 44 Date d'inscription   Statut Membre -
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
Configuration: Windows XP
Internet Explorer 6.0

1 réponse

  1. blux Messages postés 2058 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    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
    1. lord_in Messages postés 44 Date d'inscription   Statut Membre
       
      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
    2. blux Messages postés 2058 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      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
    3. lord_in Messages postés 44 Date d'inscription   Statut Membre > blux Messages postés 2058 Date d'inscription   Statut Modérateur Dernière intervention  
       
      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
    4. blux Messages postés 2058 Date d'inscription   Statut Modérateur Dernière intervention   3 455 > blux Messages postés 2058 Date d'inscription   Statut Modérateur Dernière intervention  
       
      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
    5. lord_in Messages postés 44 Date d'inscription   Statut Membre > blux Messages postés 2058 Date d'inscription   Statut Modérateur Dernière intervention  
       
      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