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 :

Filtres + sélections


Sujet :

VBA Access

  1. #1
    Membre régulier Avatar de backx3
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 173
    Points : 89
    Points
    89
    Par défaut Filtres + sélections
    Bonjour,

    Je souhaiterais avoir du code VBA pour filtrer et sélectionner les valeurs d'une colonne d'une table après le filtre :

    J'ai 2 tables : "Table1" avec tous les types (champ "X"), "Table2" avec leurs types et leurs compléments (champs "X"(types) et "Y"(compléments))

    J'aimerais, dans ma "Table2", filtrer la colonne "X" avec le premier type de la "Table1", puis sélectionner tous les compléments pour pouvoir filtrer une "Table3" avec ces compléments.

    Dans ma "Table2", j'ai des doubons de champ "X", c'est pour ça que j'ai ma "Table1" et qu'il faut, je pense, partir de ma "Table1" pour boucler sur tous les types.

    Est-ce assez clair ? N'hésitez pas à demander des précisions !

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    -> dans le generateur de requete ajouter les tables 2 et 3 puis les lier par le champ types
    -> Sélectionner (afficher) le champ type de la table 2 et complément de la table 3
    -> Ajouter une clause Où avec "X" sur type
    -> faire un group by (regroupement via le bouton en forme de sigma totaux dans la barre d'outils requete)

    ca devrait le faire

  3. #3
    Membre régulier Avatar de backx3
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 173
    Points : 89
    Points
    89
    Par défaut
    En suivant ce que tu as dit, j'en suis là :
    Nom : Capture.PNG
Affichages : 92
Taille : 51,7 Ko

    Je n'arrive pas trop à savoir ce qu'il faut mettre dans "Ou"..

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Si je comprends bien :
    "Table1" est la table T_TypeDefauts qui liste tous les défauts
    "Table2" est la table T_CaracteristiquesDefauts avec toutes les caractéristiques de chaque défaut
    "Table3" est PHARMORA_XMatiere

    Je vois bien le lien entre les 2 premières tables ([Type] et [Type de Defaut]) mais quelle(s) colonne(s) (ou champ(s)) font le lien entre les tables T_CaracteristiquesDefauts et PHARMORA_XMatiere ?

  5. #5
    Membre régulier Avatar de backx3
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 173
    Points : 89
    Points
    89
    Par défaut
    T'as tout compris ! Le lien entre les deux est DMD pour la 1ere et SPECMAT pour la 2eme.

    J'ai réussi à dérouler un petit code VBA qui fonctionne pour l'instant.. Je n'arrive pas encore à la fin mais j'ai pas mal avancé :

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    Function Macro1()
     
    Dim tbl As DAO.Recordset
    Dim exreqtype As String, qrdtype As QueryDef, rsttype As DAO.Recordset
    Dim exreqtypeXMAT As String, qrdtypeXMAT As QueryDef, rsttypeXMAT As DAO.Recordset
    Dim defaut As String
     
    On Error GoTo Macro1_Err
     
        ' Ouvrir la table en lecture/écriture
        Set tbl = CurrentDb.OpenRecordset("T_TypeDefauts", dbOpenDynaset)
        If Not tbl.EOF Then
    Else
      MsgBox "Pas d'enregistrement, veuillez réessayer ! "
    End If
            tbl.MoveNext
            defaut = tbl.Fields(0)        
     
    exreqtype = "PARAMETERS defaut string;" & _
     "SELECT T_CaracteristiquesDefauts.DMD " & _
     "FROM T_CaracteristiquesDefauts WHERE ((T_CaracteristiquesDefauts.Type) = defaut);"
     
        Set qrdtype = CurrentDb.CreateQueryDef("", exreqtype)
        qrdtype.Parameters![defaut] = defaut
        Set rsttype = qrdtype.OpenRecordset
     
     
        'Tant que non fin du recordset
    While Not rsttype.EOF
            dmd = rsttype.Fields(0)
                Dim ReqPoidsBillettes As String, RS As DAO.Recordset, RSS As QueryDef
                ReqPoidsBillettes = "PARAMETERS dmd string;" & _
                "SELECT T_CaracteristiquesDefauts.DMD, PHARMORA_XMATIERE.SERLOTMAT, PHARMORA_XBILLETTE.BILLETTE, PHARMORA_XBILLETTE.POIDSBIL" & _
        " FROM T_CaracteristiquesDefauts INNER JOIN ((PHARMORA_XMATIERE INNER JOIN PHARMORA_XBILLETTE ON PHARMORA_XMATIERE.SERLOTMAT = PHARMORA_XBILLETTE.SERLOTMAT) INNER JOIN PHARMORA_XSPECIFMAT ON PHARMORA_XMATIERE.SERLOTMAT = PHARMORA_XSPECIFMAT.SERLOTMAT) ON T_CaracteristiquesDefauts.DMD = PHARMORA_XMATIERE.SPECMAT" & _
        " WHERE (((T_CaracteristiquesDefauts.DMD)=dmd) AND ((PHARMORA_XSPECIFMAT.SANCQUAL) Is Not Null));"
     
        Set RSS = CurrentDb.CreateQueryDef("", ReqPoidsBillettes)
        RSS.Parameters![dmd] = dmd
        Set RS = RSS.OpenRecordset
        If RS.EOF Then 'Si pas d'enregistrement
        rsttype.MoveNext
        GoTo Line1
        End If
     
    'Ouvrir table T_PoidsBillettes pour stocker tous les lots mat, les poids des billettes, les DMD's, nom du fournisseurs mat
        ' Quelques variables
        Dim tblPoidsBillettes As DAO.Recordset
        ' Ouvrir la table en lecture/écriture
        Set tblPoidsBillettes = CurrentDb.OpenRecordset("T_PoidsBillettes", dbOpenDynaset)
            ' Créer un enregistrement dans la table
            With tblPoidsBillettes
            .AddNew
                   tblPoidsBillettes("LotsMatiere") = RS.Fields("SERLOTMAT")
                   tblPoidsBillettes("DMD") = RS.Fields("DMD")
                   'tblPoidsBillettes("Fournisseur") = RS.Fields("SERLOTMAT")
                   tblPoidsBillettes("PoidsBillettes") = RS.Fields("POIDSBIL")
                   'CodeFournisseur=RS.Fields("
            .Update
            End With
     
      'Passer au suivant
            rsttype.MoveNext
            MsgBox rsttype.Fields(0)
    Line1:
    Wend
     
     
    tbl.Close
    Set tbl = Nothing
     
     
    'Vider la table T_PoidsBillette quand tout est terminé
     
    Macro1_Exit:
        Exit Function
     
    Macro1_Err:
        MsgBox Error$
        Resume Macro1_Exit
     
    End Function
    Maintenant il me reste logiquement qu'a additionner tous les poids dans ma table T_PoidsBillette, merci pour ton aide quand même

    Je mets ce sujet en résolu parce que j'ai contourné mon problème de départ et fait autrement ^^

    Merci encore

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/07/2009, 19h36
  2. Réponses: 6
    Dernier message: 18/06/2008, 15h49
  3. Réponses: 0
    Dernier message: 03/03/2008, 12h02
  4. Réponses: 1
    Dernier message: 09/03/2007, 07h52
  5. Restreindre aux enregistrements filtrés par sélection
    Par repijusore dans le forum Access
    Réponses: 5
    Dernier message: 21/01/2007, 19h43

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