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

VBA Access Discussion :

Utilisation des résultats d'une requéte comme variable de critére d'une autre requete [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Ingénieur Industrie
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Points : 100
    Points
    100
    Par défaut Utilisation des résultats d'une requéte comme variable de critére d'une autre requete
    Bonjour à tous,

    Bon alors vous vous en doutez j'ai un probléme lol

    Je m'explique ma base access importe un fichier excel qu'elle met dans une table "MaTable" de cette grosse Table j'aimerai fair des exportation sous fichier excel par code Fournisseur (le nombre de code est variables).

    J'ai donc penssé à faire une requete(1) reprennant chaque code fournisseur et aprés fair une deuxiéme requete(2) contenant tout mes champs (avec comme "critére" du "code fournisseur" une variable qui prendrait succecivement les valeur de ma requete(1). seulement pour cela il me faut parcourir ma requéte(1) ligne par ligne et en regardant un peu sur le net j'ai pu trouvé qu'il faudrai passé par ADO, n'y a t-il pas plus simple?


    Merci de votre aide


    Alex

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonsoir,

    Un exemple sans recordset.

    Table Commandes ([N° commande], [Code client], [Date commande], ...)

    On veut faire une exportation pour chaque [Code client]

    Requête SEL_Clients_Ds_Commandes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT Commandes.[Code client]
    FROM Commandes
    ORDER BY Commandes.[Code client];
    Sélectionne les [Code client] de la table Commandes.

    Table ClientSelection ([Code client])
    Servira à stocker un code client.

    Requête SEL_Commandes_ClientSelection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Commandes.[N° commande], Commandes.[Code client], Commandes.[Date commande]
    FROM Commandes INNER JOIN ClientSelection ON Commandes.[Code client] = ClientSelection.[Code Client];
    Requête sur les tables Commandes et ClientSelection.
    Donc si on a un seul code client dans ClientSelection, la requête ne sort que les commandes de ce code client.

    Code VBA
    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
    Sub ItererClientsCommandes()
    Dim lgClients As Long, lgIdx As Long
    Dim strSQL As String
     
    lgClients = DCount("*", "SEL_Clients_Ds_Commandes")
    If lgClients = 0 Then Exit Sub
     
     
    For lgIdx = 1 To lgClients
        DoCmd.SetWarnings False
        ' Vide ClientSelection
        DoCmd.RunSQL "DELETE FROM ClientSelection"
        ' Met Nième Client dans ClientSelection
        strSQL = "INSERT INTO ClientSelection([Code Client]) " & _
                 "SELECT Max([Code Client]) " & _
                 "FROM (SELECT TOP " & lgIdx & " [Code Client] FROM SEL_Clients_Ds_Commandes)"
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
     
        ' Exportation requête SEL_Commandes_ClientSelection sur tables Commandes--ClientSelection
        ' 
        ' tu mets ton code ici
    Next
     
    End Sub
    A+

  3. #3
    Membre régulier
    Profil pro
    Ingénieur Industrie
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Points : 100
    Points
    100
    Par défaut
    Merci beaucoup,

    j'essay cela toute à l'heur et tien au courant:
    javai commencer à faire quelque chose comme ca:

    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
     
    Public Function ReturnVariable()
              Dim CodeFournisseur As Recordset
              Dim MyVar As String
            Set CodeFournisseur = CurrentDb.OpenRecordset("Notation fourniseur")
                CodeFournisseur.MoveFirst
            While Not CodeFournisseur.EOF
            MyVar = CodeFournisseur("Vendor")
             ReturnVariable = MyVar
            DoCmd.TransferSpreadsheet acExport, , "R1", "U:\Logistique\SERVICE\Alexis\MISSIONS\NOTATION FOURNISSEUR AC (VIRGINIA)\NOUVELLE PROCEDURE\" & MyVar & ".xls", False, ""
            CodeFournisseur.MoveNext
            MsgBox (MyVar)
            Wend
            Set CodeFournisseur = Nothing
            CodeFournisseur.Close
    End Function

    Mais je dois dire que ca devenai quelque peux fouilli car je cherché a retourner une variable dans la requete access (mise en critére) pour pouvoir l'exporter seulement ce qui me posé probléme été de retourner la variable(forcement dans une fonction) et je n'ai pas trouver comment mélanger du SQL sur VBA avec une variable; enfin bon je suis peut étre pas trés explicite.

    Merci

  4. #4
    Membre régulier
    Profil pro
    Ingénieur Industrie
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Points : 100
    Points
    100
    Par défaut
    Merci beaucoup ton code marche à merveille,

    Par contre j'aimerai maintenant que le fichier créer porte le nom du fournisseur (Code Client), il faudrai donc que la valeur repporter dans la table soit associé à une variable?

    Oui je sais j'abuse un peu

    merci

    alex

  5. #5
    Membre régulier
    Profil pro
    Ingénieur Industrie
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Points : 100
    Points
    100
    Par défaut
    C'est bon j'ai trouvé une soluce

    Voila la totalité de mon code pour cela que ca interresse

    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
       Sub Explosion_Excel()
     
    Dim lgClients As Long, lgIdx As Long
    Dim strSQL As String
    Dim codeFournisseur As String
     
    lgClients = DCount("*", "R_Select_Fourn")
    If lgClients = 0 Then Exit Sub
     
     
    For lgIdx = 1 To lgClients
        DoCmd.SetWarnings False
        ' Vide SelectionFournisseur
        DoCmd.RunSQL "DELETE FROM [Selection_Fourn]"
        ' Met Nième CodeFournisseur dans SelectionFournisseur
        strSQL = "INSERT INTO Selection_Fourn([Vendor]) " & _
                 "SELECT Max([Vendor])" & _
                 "FROM (SELECT TOP " & lgIdx & " [Vendor] FROM R_Select_Fourn)"
        DoCmd.RunSQL strSQL
        ' Attribution du code fournisseur inséré dans la table Selection_Fourn à la variable codeFournisseur
        codeFournisseur = CurrentDb.OpenRecordset("Selection_Fourn").Fields(0).Value
        MsgBox (codeFournisseur)
        DoCmd.SetWarnings True
     
        ' Exportation requête
     
        DoCmd.TransferSpreadsheet acExport, , "R1", "U:\Logistique\SERVICE\Alexis\MISSIONS\NOTATION FOURNISSEUR AC (VIRGINIA)\NOUVELLE PROCEDURE\Evaluation Fournisseur" & codeFournisseur & ".xls", False, ""
     
    Next
     
    End Sub

    Merci encore pour ton aide précieuse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher les résultats d'une requête comme des colonnes
    Par bouts dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/08/2010, 17h39
  2. Réponses: 11
    Dernier message: 08/07/2008, 13h16
  3. ajouter le résultat d une requête à la variable d une table
    Par Claire07 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 19/06/2006, 14h03
  4. Réponses: 5
    Dernier message: 14/06/2006, 15h19
  5. [SQL] Récupérer des variables de formulaire dans une requête SQL
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/11/2005, 18h44

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