IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Lier des données d'une liste à une requête


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 97
    Par défaut Lier des données d'une liste à une requête
    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 :

    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
    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
    '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
    MERCI et bonne journée.

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 97
    Par défaut Qui plus est...
    Pour le moment, lorsque je clic sur le bouton traitement, mon fichier Excel se créer avec les onglets "RESUME DES ETUDES" et "RESUME DES PRODUITS" mais ne me créé pas l'onglet "TRAITEMENT PAR PRODUITS". Qui plus est, j'ai un message d'erreur "OBJET REQUIS".

    Voilà un peu plus d'info...

  3. #3
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Bonjour,

    Il y a je crois une grossière étourderie...

    Je t'invite à écrire,en-tête de module, après Option Compare Database :
    Ensuite tu compiles et tu corriges l'étourderie pointée du doigt par le compilateur...
    (au passage ça te force à déclarer toute les variables utilisées, ce qui est une bonne chose...)

Discussions similaires

  1. Créer des feuilles excel à partir d'une liste+données
    Par sof_011 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/11/2013, 15h14
  2. Réponses: 9
    Dernier message: 26/04/2012, 17h32
  3. [MySQL] receptionner des donnes a partir d'une liste deroulante
    Par ibuto dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/08/2011, 12h50
  4. [Débutant] subterfuge pour lier des données à une checkedlistbox
    Par enzostar dans le forum C#
    Réponses: 1
    Dernier message: 10/08/2011, 16h10
  5. Réponses: 3
    Dernier message: 13/02/2007, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo