Bonjour, je suis nouveaux sur ces forums que je trouve très bien, mais je n'ai pas trouver de reponse a mon probleme alors je post ici:
Voila j'ai un formulaire ou l'ont peut entrer des semaines de l'année, et pour cela il est juste necessaire d'entrer le premier lundi de chaque semaine , et une requete se charge du reste pour calculer les autres dates de la semaine.
J'ai donc voulu mettre un test dans le formulaire de maniere a ce que l'utilisateur ne puisse pas rentrer des jours déja existants. Ainsi j'ai deux types de test :
Le premier consiste a voir si la date entré n'est pas inférieur a la premiere date de la premiere semaine. (Si vous rentrez 19/10/87 pour la premiere semaine , il est impossible d'entrer moins pour les autres)
Le second consiste a regarder sur chaque ligne de la table "semaines" les jours composant les semaines , ce qui empeche l'utilisateur d'entrée en premier lundi de semaine, le mardi d'une semaine précédente
Le probleme :
--je rentre la premiere semaine, il calcule tous les jours, tout va bien. Je rentre un second lundi : si le lundi est inférieur au lundi de la premiere semaine, le message d'erreur saffiche, tout va bien.
--Si je rentre comme lundi, un des jours de la premiere semaine, tout va bien, l'erreur s'affiche.
--donc, je rentre le lundi de la seconde semaine , il calcule la seconde semaine, tout va bien.
--la je rentre comme lundi de la troisime semaine , le meme que celui de la seconde semaine, il accepte.... pareil si c'est un jour de cette seconde semaine(mardi, mercredi etc) .
-->Je soupçonne un probleme dans la boucle de mon programme mais je ne vois pa ou :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 Private Sub bt_valid_Click() Dim ssql As String Dim sqllundi As String Dim sselection As String Dim strlundi As Date Dim reponse As String Dim bt_theory As String Dim lelundi As Date Dim lignes As Object Dim id_lundi As Object Dim i As Integer Dim j As Integer Dim erreur As Integer erreur = 0 If champ_date.Value <> "" Then 'test si le champ est bien remplie strlundi = champ_date.Value 'On compte le nombre de lignes de la table ssql = "SELECT Count(semaines.lundi) AS nb FROM semaines;" Set lignes = CurrentDb.OpenRecordset(ssql) 'On test la semaine For i = 1 To lignes![nb] sqllundi = "select lundi from semaines" Set id_lundi = CurrentDb.OpenRecordset(sqllundi) If i = 1 Then If strlundi < id_lundi![lundi] Then 'on test si le lundi entrée n'est pas inférieur au lundi de la premiere semaine erreur = 1 End If End If 'On test chaque jour de la semaine For j = 0 To 6 If id_lundi![lundi] + j = strlundi Then erreur = 1 End If Next Next If erreur = 1 Then MsgBox ("Date existante ou date inférieur a la premiere semaine entrée") End If If erreur = 0 Then 'Si la date n'existe pas on rentre la semaine ssql = "INSERT INTO semaines(lundi) values ('" & strlundi & "') " DoCmd.RunSQL (ssql) last_lundi.Value = champ_date.Value bt_theorie.Value = champ_date.Value + 7 End If End If If champ_date.Value = "" Then MsgBox ("entrez un lundi") End If End Sub
Je sais que quand l'erreur=1 il continue de faire la boucle, mais la n'est pas le problme ,je souhaiterais une solution pour que le test se fait sur toute les semaine rentrées!!
Merci a vous , cordialement!
PS : je me suis aperçu du probleme tout a l'heure et mon projet est a rendre demain hélas...
Partager