Bonjour

Mon objectif est double :
- faire trois requêtes en vba
- Concaténer deux requêtes en utilisant le résultat de la troisième

exemple
requête 1 : renvoie le nom de l'ingrédient qui doit être utilisé
requête 2 : revoie le poids total de la recette
requête 3 : revoie la quantité de l'ingrédient dans la recette


Résultat voulu : NomIngrédient1 (Quantité en %), NomIngrédient2 (Quantité en %), ... en fonction du nombre d'ingrédient de la recette.

J'ai réussi à faire la requête sur le nom de l'ingrédient
J'ai réussi à faire la requête sur la quantité totale (même si elle n'est pas parfaite , elle renvoie la bonne valeur)
Je n'ai pas réussi à faire la troisième requête.

> comment diviser une valeur par un nombre obtenu dans une autre requête (requête 2) ?
> comment concaténer les deux requêtes ?


Ci dessous le code d'obtention de la somme des ingrédients; la valeur "SommeRecetteVersion" obtenue à la fin est Public
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
 
Public Sub ValeurSomme(ByVal RecetteVersion As Integer)
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim requete As DAO.QueryDef
Dim sSQL As String
Dim SomRecetteVersion
 
Set db = CurrentDb
Set requete = db.CreateQueryDef("", "SELECT ..................." _
& " FROM ....................." _
& " GROUP BY ..............................." _
& " HAVING ...............................=" & RecetteVersion)
 
Set rst = requete.OpenRecordset()
rst.MoveFirst
 
If Not rst.EOF Then
      rst.MoveFirst
      While Not rst.EOF
          SomRecetteVersion = SomRecetteVersion & rst.Fields(0).Value & " "
          rst.MoveNext
      Wend
End If
Set rst = Nothing
SommeRecetteVersion = SomRecetteVersion
End Sub


Ci dessous le code pour concaténer les deux requêtes

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
 
Public Function RequeteConcatenation()
 
Dim db As DAO.Database
 
Dim rst As DAO.Recordset
Dim rst1 As DAO.Recordset
 
Dim requete As DAO.QueryDef
Dim requete1 As DAO.QueryDef
 
Dim valeur as Integer
 
Set db = CurrentDb
 
Call ValeurSomme(RecetteVersion) ' ici  RecetteVersion sera donné par une txtbox du formulaire
 
 
Set requete = db.CreateQueryDef("", "SELECT .......")
 
Set requete1 = db.CreateQueryDef("", "SELECT .......")
 
Set rst = requete.OpenRecordset()
Set rst1 = requete1.OpenRecordset()
rst.MoveFirst
 
If Not rst.EOF Then
      rst.MoveFirst
      While Not rst.EOF
          valeur = valeur & rst.Fields(0).Value & " ( " & valeur & rst1.Fields(0).Value & " %)"
          rst.MoveNext
          rst1.MoveNext
      Wend
End If
 
Set rst = Nothing
Set rst1 = Nothing
msgbox valeur
End Function
Questions :
comment concaténer les deux requêtes
Comment diviser la quantité par le poids total et ainsi obtenir le % de l'ingrédient ?


Merci de votre aide