Bonjour,
Je progresse petit à petit dans mon projet de stage mais me voilà à nouveau bloqué.
Je me suis basé sur l'un des nombreux plannings mis à disposition sur le site, pour arriver à un résultat qui convient parfaitement au futur utilisateur.
Pour rappel, voici ma table "Enregistrements" :
DateJ | N° | Durée | NMAT | NCHAUFF | Chantier | Interim | Loc | Type loc | Indications | Confirmation
DateJ étant une date, N° le numéro du chantier dans la journée suivi de sa durée, chantier, le code chantier en string (car comporte des lettres), confirmation, une case à cocher (true/false) etc...
Je souhaite ajouter une nouvelle fonctionnalité qui permettra à l'utilisateur de ne pas avoir à re-rentrer toutes les données chaque jour.
En cliquant sur un bouton de commande, les enregistrements correspondants à la date de la veille sont tous automatiquement copié pour la date du jour (le champ "confirmation" prendra quant à lui la valeur "false")
Je vous expose mon code :
Il existe peut-être un moyen plus rapide pour coder tout ça, mais ceci avait l'air de fonctionner.
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
80
81
82
83
84 Private Sub Veille_Click() Dim db As DAO.Database Dim DateV As Date Dim sql As String Dim N As Integer Dim Duree As Integer Dim NMAT As Integer Dim NCHAUFF As Integer Dim Chantier As String Dim Chef As Integer Dim Interim As Integer Dim Loc As Integer Dim Typeloc As String Dim Indic As String Dim MaTable As Recordset Dim j As Integer DateV = Me!DateD.Value - 1 Set MaTable = CurrentDb.OpenRecordset("Enregistrements", dbOpenDynaset) j = DCount("[DateJ]", "Enregistrements", "[DateJ] = #" & DateV & "#") MsgBox (j & " enregistrement(s) vont être copiés dans la table !") MaTable.FindFirst "[DateJ] = #" & DateV & "#" While (Not MaTable.NoMatch) N = MaTable("N°") Duree = Nz(MaTable("Durée")) NMAT = Nz(MaTable("NMAT")) NCHAUFF = Nz(MaTable("NCHAUFF")) Chantier = Nz(MaTable("Chantier")) Chef = Nz(MaTable("Chef")) Interim = Nz(MaTable("Interim")) Loc = Nz(MaTable("Loc")) Typeloc = Nz(MaTable("Type loc")) Indic = Nz(MaTable("Indications")) If DCount("[DateJ]", "Enregistrements", "[DateJ] = #" & Me.DateD.Value & "# And [N°] = " & N & " And [Chantier] = '" & Chantier & "'") = 0 Then MaTable.AddNew MaTable("DateJ") = DateV + 1 If N <> 0 Then 'Ces conditions servent à contourner l'erreur en cas de null MaTable("N°") = N End If If Duree <> 0 Then MaTable("Durée") = Duree End If If NMAT <> 0 Then MaTable("NMAT") = NMAT End If If NCHAUFF <> 0 Then MaTable("NCHAUFF") = NCHAUFF End If If Chantier <> "" Then MaTable("Chantier") = Chantier End If If Chef <> 0 Then MaTable("Chef") = Chef End If If Interim <> 0 Then MaTable("Interim") = Interim End If If Loc <> 0 Then MaTable("Loc") = Loc End If If Typeloc <> "" Then MaTable("Type loc") = Typeloc End If If Indic <> "" Then MaTable("Indications") = Indic End If MaTable("Confirmation") = False MaTable.Update End If MaTable.FindNext "[DateJ] = #" & DateV & "#" Wend MaTable.Close MajPlanning 'Met à jour le planning (interface) End Sub
J'ai commencé toute une serie de test, en ajoutant des valeurs, en allant au jour suivant, puis en actionnant la commande et...
...c'est le drame.
Tout fonctionne parfaitement excepté du 2 au 13 de chaque mois. Si je suis positionné sur une de ces dates, il ne me copie aucune valeur de la veille, alors que manuellement cela marche très bien, et que le code fonctionne pour tous les autres jours du mois.
Je trouve cela vraiment bizarre et ne parvient pas à dénicher l'origine du probleme...
Si, une âme charitable pouvait me donner un coup de main, je lui en serait très reconnaissant !
Merci
Partager