Bonjour,
Je bloc encore...
Je vais tenter d'être précise : j'ai un formulaire qui recherche dans une table ETUDES les N° des études correspondant aux critéres de sélection choisis par l'utilisateur. Le résultat de la recherche est afficher dans une liste (Form_Formulaire2.lst_resultat).. A partir de cette liste d'étude, je souhaite executer une requête (lorsque je clic sur un bouton TRAITEMENT) et faire l'exportation des résultats sous EXCEL dans différents onglets : la requête (qui réalise quelques stat sommaire), doit donc se baser sur les études sélectionner et non sur l'ensemble de la table ETUDES, ce qui est mon problème pour le moment...
Je vous donne le code, si quelqu'un peut m'aider, ça serait cool parce que ça fait plusieurs jours que je rame...![]()
Code qui traite et exporte les résultats au format Excel :
Modules PDT, Titre2 et Ecriture :
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 Option Compare Database Public Sub TG2(ByVal Cetude As CheckBox, ByVal Cproduit As CheckBox) Dim app As Object Dim classeur As Object Dim feuille1 As Object Dim feuil_etude As Object Dim i As Integer Dim j As Integer Dim ligne As Integer Dim fin As Integer Dim trouve As Boolean Dim strsql As String Dim strtable As String Dim strcriteria As String Dim typePdt As String Set app = CreateObject("excel.application") app.Visible = True Set classeur = app.workbooks.Add If Cetude.Value = True Then Set feuille1 = classeur.worksheets.Item(1) 'On remplit la feuille excel "RESUME DES ETUDES" Call ResumeEtude(feuille1) Set feuille1 = Nothing End If If Cproduit.Value = True Then Set feuille1 = classeur.worksheets.Item(2) 'On remplit la feuille excel "RESUME DES PRODUITS" Call ResumeProduit(feuille1) Set feuille1 = Nothing End If 'On calcul les statistiques pour chaque produits de chaque études des différents items (en ms ???) For i = 1 To (Form_Formulaire2.lst_resultat.ListCount + 1) If Form_Formulaire2.lst_resultat.Selected(i) Then Set feuil_etude = classeur.worksheets.Item(3) feuil.Name = "TRAITEMENT PAR PRODUITS" Call PDT(i, strsql) Form_Formulaire3.lst_resul.RowSource = strsql Form_Formulaire3.lst_resul.Requery Call Titre2(feuil_etude, "TRAITEMENT PAR PRODUITS POUR CHAQUE ETUDES ET CHAQUE ITEMS", 1, 14) Call Ecriture(feuil_etude, 14, 3, 4, fin) feuil_etude.Columns("B:J").EntireColumn.AutoFit Set feuil_etude = Nothing End If Next i Set classeur = Nothing Set app = Nothing End Sub
MERCI et bonne journée.
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 'SQL pour traitement stat par études et par items au niveau des produits Public Sub PDT(ByVal ligne As Integer, strsql As String) Dim strtable As String Dim strcriteria As String strtable = "[MOY (DETAIL)], [ET (DETAIL)]" strcriteria = "[MOY (DETAIL)].no_etude = " & Form_Formulaire2.lst_resultat.Column(0, ligne) strcriteria = strcriteria & " AND ([MOY (DETAIL)].type_marque=[ET (DETAIL)].type_marque) AND ([MOY (DETAIL)].no_produit=[ET (DETAIL)].no_produit) AND ([MOY (DETAIL)].no_etude=[ET (DETAIL)].no_etude) AND ([MOY (DETAIL)].type_produit=[ET (DETAIL)].type_produit)" strsql = "SELECT [MOY (DETAIL)].type_produit, [MOY (DETAIL)].no_etude, [MOY (DETAIL)].no_produit, [MOY (DETAIL)].type_marque, [MOY (DETAIL)].[APPRECIATION GENERALE], [ET (DETAIL)].[APPRECIATION GENERALE], [MOY (DETAIL)].[APPRECIATION ASPECT], [ET (DETAIL)].[APPRECIATION ASPECT], [MOY (DETAIL)].[APPRECIATION GOUT], [ET (DETAIL)].[APPRECIATION GOUT], [MOY (DETAIL)].[APPRECIATION ODEUR], [ET (DETAIL)].[APPRECIATION ODEUR], [MOY (DETAIL)].[APPRECIATION TEXTURE], [ET (DETAIL)].[APPRECIATION TEXTURE]" strsql = strsql + " FROM " & strtable strsql = strsql + " WHERE ((" & strcriteria & " ));" End Sub Public Sub Titre2(ByVal fichier As Object, ByVal nom As String, ByVal debut As Integer, ByVal nb As Integer) Dim j As Integer fichier.cells(debut, 1) = nom fichier.cells(debut, 1).Font.Italic = True fichier.cells(debut, 1).Font.Bold = True fichier.cells(debut, 1).Font.ColorIndex = 3 For j = 0 To nb fichier.cells(debut + 1, j + 1).Font.Bold = True fichier.cells(debut + 1, j + 1) = Form_Formulaire3.lst_resul.Column(j, 0) Next j End Sub Public Sub Ecriture(ByVal fichier As Object, ByVal nb As Integer, ByVal no1 As Integer, ByVal no2 As Integer, ByVal fin As Integer) Dim j As Integer Dim ligne As Integer For j = 0 To nb For ligne = 1 To (Form_Formulaire3.lst_resul.ListCount - 1) If j = no1 Or j = no2 Then fichier.cells(ligne + fin - 2, j + 1) = CSng(Form_Formulaire3.lst_resul.Column(j, ligne)) fichier.cells(ligne + fin - 2, j + 1).NumberFormat = "0.00" Else fichier.cells(ligne + fin - 2, j + 1) = Form_Formulaire3.lst_resul.Column(j, ligne) End If Next ligne Next j End Sub
Partager