Bonjour tout le monde,
Je me suis mis à VBA ce matin , en utilisant mes restes de Java....
je voulais savoir pourquoi mon code ne marchait pas , il me renvoie a une autre macro.
Deplus pour le remplissage de ma table j'ai un doute sur le code utilisé!
Je vous remercie d'avance du temps consacré à ma demande.
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
85
86
87 Public class Dim db As DAO.Database ' objet permettant d'ouvrir une base de données existante Dim tg As DAO.Recordset ' objet enregristrant les champs d'une BDD Dim don As DAO.Recordset Dim taux As Integer 'nombre Dim i As Integer Dim Ml As Integer Dim temp As DAO.TableDef Dim AR As Integer Dim PROV As Integer Sub CreateTable() 'fonction qui crée une table vide Dim dbs As DAO.Database Dim tdf As DAO.TableDef Dim fld As DAO.Field Set dbs = CurrentDb() ' Retourne une référence à la base de données en cours Set tdf = dbs.CreateTableDef("Taux garantie des contrats") 'Retourne une variable de type objet TableDef pointant sur une nouvelle table Set fld = tdf.CreateField("NODOSS", dbInteger) 'Définit un nouveau champ dans la table. tdf.Fields.Append fld ' Ajoute l'objet Field à la collection Fields de l'objet TableDef. Set fld = tdf.CreateField("DDVERS", dbInteger) tdf.Fields.Append fld Set fld = tdf.CreateField("Taux Garantie", dbInteger) tdf.Fields.Append fld Set fld = tdf.CreateField("Année Garantie restant", dbInteger) tdf.Fields.Append fld Set fld = tdf.CreateField("Provision ", dbInteger) tdf.Fields.Append fld dbs.TableDefs.Append tdf RefreshDatabaseWindow ' Ajoute l'objet TableDef à la collection TableDefs de la base de données. MsgBox "La table " & tdf.Name & " a été créée" Set fld = Nothing Set tdf = Nothing Set dbs = Nothing End Sub Public Function création() Set temp = CreateTable() Set db = wrk.Openddatabase("B:\PRODUCTION\GPMA\AGMF EPARGNE\AGMF EPARGNE.mdb") Set tg = db.OpenRecordset("SELECT [Taux garantie 2].[date de début], [Taux garantie 2].[date de fin] ,[taux garantie 2].[taux garantie] ,[taux garantie 2].[durée]") Set don = db.OpenRecordset("SELECT [DONNEES].[DDVERS] , [DONNEES]. [NODOSS]", [DONNEES].[ENCOUFIN]) Set Ml = Day(Date) + Month(Date) * 100 + Year(Date) * 10000 'prendre date d'un formulaire à créer For i = 1 To don.Fields.Count - 1 For j = 1 To tg.Fields.Count - 1 If (tg.[date de début].[j] < don![DDVERS].[i]) And (don![DDVERS].[i] <= tg![date de fin].[j]) Then 'ce if permet de connaitre le taux de garantie issu de la table ! If don![DDVERS].[i] + tg![durée].[j] * 10000 < Ml Then taux = 0 'le taux est nul car la date de garantie est dépassée temp.taux Garantie.Append(taux) temp.DDVERS.Append (don![DDVERS].[i]) ' appelle la date de versement de la ligne i de la table DONNEES temp.NODOSS.Append (don![NODOSS].[i]) ' appelle le numero de dossier de la ligne i de la table DONNEES temp.Provision.Append (0) temp.AnnéeG.Append (0) Else AR = don![DDVERS].[i] + tg![durée].[j] * 10000 - Ml PROV = don![ENCOUFIN].[i] * (1 + taux) ^ AR taux = tg![taux garantie] ' renvoie le taux garantie de la pèriode temp.taux Garantie.Append(taux) temp.DDVERS.Append (don![DDVERS].[i]) temp.NODOSS.Append (don![NODOSS].[i]) temp.Provision.Append (PROV) temp.AnnéeG.Append (AR) End If End If Next j Next i End Function End
Je pense que les Don![NODOSS].[i] doivent etre faux ainsi que les Temp.APPEND... ( il doit y avoir d'autres fautes aussi)
Je vous remercie
Partager