[access] changement du mois d'une date [Résolu/Fermé]

Signaler
Messages postés
46
Date d'inscription
dimanche 27 mai 2007
Statut
Membre
Dernière intervention
29 octobre 2007
-
Messages postés
46
Date d'inscription
dimanche 27 mai 2007
Statut
Membre
Dernière intervention
29 octobre 2007
-
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

Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 022
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))
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 022 >
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020

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...
Messages postés
46
Date d'inscription
dimanche 27 mai 2007
Statut
Membre
Dernière intervention
29 octobre 2007
>
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020

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
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 022 >
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020

J'ai mis ENTRE #, donc un # au début et un à la fin :-)

T = val("#" & X1 & "/" & X2 & "/" & X3 & "#")

Le val n'est peut-être pas obligatoire, mais tu traites une chaine que tu mets dans une date, donc faut voir s'il accepte... ou tenter avec T = cdate ("#" & X1 & "/" & X2 & "/" & X3 & "#")
Messages postés
46
Date d'inscription
dimanche 27 mai 2007
Statut
Membre
Dernière intervention
29 octobre 2007
>
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020

J’avais bien ajouté les # au début et à la fin mais sans " " ;)
Le problème continue à exister mais je sens qu’on s’approche de la solution !!
Si je mets : T = "#" & X1 & " / " & X2 & " / " & X3 & "#"
Il me donne incompatibilité du type
Et si je mets T = CDate("#" & X1 & " / " & X2 & " / " & X3 & "#"), il me dit incompatibilité du tyep
Et pour T = Val("#" & X1 & " / " & X2 & " / " & X3 & "#"), il me nome le champ comme « Fst 00 :00 :00 »
et pas la date que j'ai tapé sur mon formulaire
je sais pas si tu vois une erreur mais je suis dans une tunel sans sortie!!!
Messages postés
46
Date d'inscription
dimanche 27 mai 2007
Statut
Membre
Dernière intervention
29 octobre 2007
>
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020

J’ai trouvé
La voilà si ca intéresse qlq 1
Et merci Blux pour ton aide

X1 = Val(ZT_J.Value)
X2 = Val(ZT_M.Value)
X3 = Val(ZT_A.Value)
T = X1 & " / " & X2 & " / " & X3
T1 = DateAdd("m", 1, T)
T2 = DateAdd("m", 1, T1)
T3 = DateAdd("m", 1, T2)
T4 = DateAdd("m", 1, T3)
T5 = DateAdd("m", 1, T4)
T6 = DateAdd("m", 1, T5)
T7 = DateAdd("m", 1, T6)
T8 = DateAdd("m", 1, T7)
T9 = DateAdd("m", 1, T8)
T10 = DateAdd("m", 1, T9)
T11 = DateAdd("m", 1, T10)
T12 = DateAdd("m", 1, T11)
T13 = DateAdd("m", 1, T12)
T14 = DateAdd("m", 1, T13)
T15 = DateAdd("m", 1, T14)
T16 = DateAdd("m", 1, T15)
T17 = DateAdd("m", 1, T16)
T18 = DateAdd("m", 1, T17)
T19 = DateAdd("m", 1, T18)
T20 = DateAdd("m", 1, T19)
T21 = DateAdd("m", 1, T20)


En faite la fonction ddate change le « m » mois en ajoutant un mois à la date
Et la forme de la date là est bien en français jj/mm/aaaa


Merci Blux