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

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
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
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
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

Merci à tous d'avance !!!