Bonjour à tous,
Je suis un ancien utilisateur d'Access 97. J'ai développé une seule application pour mon entreprise parce qu'il n'y avait pas d'autres besoins.
Et depuis 10 ans, comme ils n'avaient pas de besoins particuliers,
j'ai malheureusement moins pratiqué Access et j'ai donc perdu des notions.
Je dirai donc que je suis d'un niveau moyen que je maîtrise relativement bien Access sauf les modules VBA.
J'utilise des modules VBA si je ne peux pas faire autrement comme aujourd'hui.
Ce code est tiré d'une petite application que j'avais vue en formation.
Il sert à créer un numéro automatique de facture quand on lance l'impression des factures du mois.
Sur la petite application utilisée en formation, il n'y a pas de message d'erreur et elle fonctionne bien.
Par contre, dans mon application de facturation, j'ai fait la même chose et j'ai adapté les noms (table, requête, formulaire de saisie et état). J'ai simplement changé les noms dans la procédure numfacture pour adapter les noms de table, champs, requête, formulaire, et état.
Mais j'ai le message d'erreur suivant :
"Erreur d'exécution 3061.
Trop peu de paramètres. 2 attendu."
Cela se produit sur la ligne suivante du code de numfacture :
Set r = db.OpenRecordset("Facture mensuelle malade", DB_OPEN_DYNASET)
Voici le code de numfacture :
Je cherche en vain dans ma requête mais je ne trouve rien.
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 Function Numfacture() Dim db As Database Dim r As Recordset, s As Recordset, f As Form Dim suivnum As String, nouvnum As String Dim numero As Long Dim codecli1 As Long, codecli2 As Long Set db = DBEngine(0)(0) ' requête factures malades limité Set r = db.OpenRecordset("Facture mensuelle malade", DB_OPEN_DYNASET) ' état facture mensuelle malade Set s = db.OpenRecordset("facture mensuelle malade", DB_OPEN_DYNASET) ' formulaire pour choix de facture Set f = Forms![Choix_date_fact_perso] If Not s.EOF Then s.MoveLast suivnum = s!Numfacture If Mid(suivnum, 1, 4) = f!Année And Mid(suivnum, 5, 2) = f!Mois Then nouvnum = Mid(suivnum, 1, 6) & Format(Val(Mid(suivnum, 7, 3)) + 1, "000") numero = Val(Mid(nouvnum, 7, 3)) Else nouvnum = Format(f!Année, "0000") & Format(f!Mois, "00") & "001" numero = 1 End If f!test = nouvnum If Not r.BOF Then r.MoveFirst codecli1 = r!CodeClient codecli2 = 0 On Error Resume Next Do While Not r.EOF If codecli1 <> codecli2 Then s.AddNew s!Numfacture = nouvnum s!Codecli = r!CodeClient s!Mois = Format(f!Mois, "00") s!Année = Format(f!Année, "0000") s.Update numero = numero + 1 nouvnum = Format(f!Année, "0000") & Format(f!Mois, "00") & Format(numero, "000") End If codecli1 = r!CodeClient r.MoveNext codecli2 = r!Codecli Loop End Function
Ce message indique une erreur de syntaxe au niveau du module ou une erreur dans ma requête, où il y a quelque chose qui ne va pas ?
Je précise que ma requête est une requête sélection avec 2 paramètres qui récupèrent le mois et l'année dans le formulaire de choix (l'utilisateur doit saisir le numéro du mois et l'année pour lesquels il veut imprimer les factures).
Cette requête fonctionne bien sans erreur et me donne bien les résultats quand je la lance manuellement.
Une piste ? Sur la requête ou sur la syntaxe du module ?
Merci d'avance.
Gundt
Partager