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
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))
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
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...
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)
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 & "#")
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!!!
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...
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
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 & "#")
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!!!
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