Bonjour à tous,
Je crée en ce moment même une base de données, et j'ai besoin d'une requête récursive un peu lourde qui doit passer par un code VBA sous ACCESS 2010.
J'ai trouvé ce merveilleux code, dans une conversation de ce forum
qui est apellée par
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 Public Sub compter(idpiece As String, idPieceACompter As String, ByRef QtteTotal As Integer, Optional nb As Integer = 1) ' Dim qdf As DAO.QueryDef Dim rcs As DAO.Recordset ' QtteTotal = QtteTotal + _ nb * Nz(DLookup("[Quantite]", "COMPOSITION", "[ComposantId]='" & idpiece & "' AND [ComposeId]='" & idPieceACompter & "'"), 0) ' ici j'utilise une requête enregistrée et paramétrée, nommée "RSelect" dont voici le SQL: ' PARAMETERS [Référence pièce ?] Text ( 12 ); ' SELECT COMPOSITION.ComposeId, COMPOSITION.Quantite ' FROM COMPOSITION ' WHERE COMPOSITION.ComposantId = [Référence pièce ?] ; ' Set qdf = CurrentDb.QueryDefs("RSelect") qdf.Parameters("[Référence pièce ?]") = idpiece Set rcs = qdf.OpenRecordset If Not rcs.EOF Then rcs.MoveFirst Do While Not rcs.EOF If rcs.Fields(0) <> idPieceACompter Then Call compter(rcs.Fields(0), idPieceACompter, QtteTotal, rcs.Fields(1)) ' <==appel récursif End If rcs.MoveNext Loop End If Set qdf = Nothing Set rcs = Nothing End Sub
Donc mon problème est de savoir très précisément comment implanter cette macro VBA sous Acess 2010, car ça m'a l'air un peu figé. Des captures d'écrans seraient les bienvenues
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Public Sub appel() Dim qt As Integer ' qt = 0 Call compter("aile", "rivet", qt) ' réponse: 183 ' Call compter("aileron", "rivet", qt) ' réponse: 13 ' Call compter("train", "rivet", qt) ' réponse: 20 ' Call compter("aile", "charniere", qt) ' réponse: 5 MsgBox (qt) ' End Sub
Merci à tous d'avance !!!
Partager