salut
mon code est un userform excel vba->DAO->Access
3 combo qui se remplisse avec le resultat de requete,ca fonctionne bien
apres j appuie sur bouton qui fait appel a la fonction controlinvoice
qui parcours un troncon excel B56 a B553 ou c la ref et F56 a F553 ou c le prix
si la cellule est vide je passe au i suivant et je fais pas la requete sinon
je fait un requete ou g cherche le prix de la valeur B56
et je regarde si le prix=la valeur de F56
si c different alors la cellule devient rouge
et nberror incremente
si on arrive a la fin 553 il affiche le nberror
enfin voila le code peut être se sera plus claire
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 Const debut As Integer = 56 Const fin As Integer = 553 Const colonB As Integer = 2 Const colonF As Integer = 6 'declare un nom d'objet de la classdao Private cnxDAO As ClassDAO Public Sub ControlInvoice() ' fonction permettant de verifier si les tarifs excel correspondent aux tarifs de la base access Dim lot As String Dim printer As String Dim avenant As String Dim sql As String 'selection du lot stocké dans lot lot = Cbolot.Value 'selection du printer stocké dans printer printer = Cboprinter.Value 'selection de avenant stocké dans avenant avenant = Cbonomav.Value Dim nberror As Integer ' nb error si prix base <>prix excel Dim i As Integer 'ligne 56 Dim j As Integer 'colonne 2 B Dim k As Integer 'colonne 6 F i = debut 'const correspondant cellule B56 de excel j = colonB 'const correspondant a la colonne B de ma page excel k = colonF 'const correspondant a la colonne F de ma page excel For i = debut To fin ' de B56 a B553 Debug.Print i code = Cells(i, j).Value 'code=la valeur de cette cellule sql = "select av_unitprice from avenant where ((av_lot_nom='" & lot & "')&(av_printer_nom='" & printer & "')&(av_nom_av_nom='" & avenant & "')&(av_code_nom='" & code & "'))" If code <> "" Then Dim rsprix As Recordset 'declaration du recordset rsprix 'je stocke dans rsprix le resultat de ma requete le prix par rapport au lot,printer,nom avenant et au code present dans la cellule en cours Set rsprix = cnxDAO.CurrentDB.OpenRecordset(sql, dbOpenDynaset, dbFailOnError) Debug.Print sql With rsprix ' parcours de mon recordset prix = !av_unitprice 'j assigne a prix le prix obtenu par ma requete End With If (Cells(i, k).Value <> prix) Then ' si le prix de ma cellule excel est different du prix de la base Cells(i, k).ColorIndex = 3 'alors cellule devient rouge nberror = nberror + 1 'alors j incremente le nberror End If If i = fin Then MsgBox ("il y a " & nberror & " erreur(s)") 'affiche le nombre erreur nberror End If Else End If Next i 'ligne suivante End Sub
merci
Partager