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 :

Récupérer la valeur d'un champ dans une table [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut Récupérer la valeur d'un champ dans une table
    Bonjour,

    Dans une table j'ai plusieurs champs qui peuvent contenir 3 valeurs. Je voudrais parcourir tous les champs de la table et regrouper toutes les valeurs identique dans une autre table (les trois premières colonnes ont des valeurs variable). Par exemple une table étudiant, je voudrais regrouper tous les etudiant qui sont en 3e dans une autre table, les 4e dans une autre tables et ainsi de suite.

    J'ai testé ce code mais il me retourne une erreur: erreur 3219 Opération non valide.

    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
     
    Dim sql, opt, val As String
    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Dim fld As DAO.Field
     
    Set db = CurrentDb
     
    Set tdf = db.TableDefs("MaTable")
      For Each fld In tdf.Fields
        If fld.Type = dbText Then
     
            If fld.Value = "Valeur1" Then
                opt = fld.Name
                val = fld.Value
                sql = "INSERT INTO AutreTable(col1, col2) VALUES (val, opt);"
                DoCmd.RunSQL sql
     
            ElseIf fld.Value = "Valuer2" Then
                opt = fld.Name
                val = fld.Value
                sql = "INSERT INTO AutreTable(col1, col2) VALUES (val, opt);"
                DoCmd.RunSQL sql
                DoCmd.RunSQL sql
     
           ElseIf fld.Value = "Valuer3" Then
                opt = fld.Name
                val = fld.Value
                sql = "INSERT INTO AutreTable(col1, col2) VALUES (val, opt);"
                DoCmd.RunSQL sql
                DoCmd.RunSQL sql
            End If
        End If
      Next fld
     
    Set fld = Nothing
    Set tdf = Nothing
    Set db = Nothing
    L'erreur est à cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If fld.Value = "Valeur1" Then

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Points : 324
    Points
    324
    Par défaut
    Bonjour,

    Tu peut utiliser une requête insert avec un filtre nn? Pour reprendre ton exemple ça donnerait:

    "INSERT INTO Table2 SELECT Table1.* WHERE Table1.Classe=3"

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    J'ai pensé à faire sa mais j'ai plusieurs colonnes, elles peuvent être supprimé ou ajoutée. Donc lorsque je veux extraire les lignes dans une autre table en fonction de leur valeur, je ne connais pas le nombre de colonne et leur nom.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Points : 324
    Points
    324
    Par défaut
    Avec ce code tu peux deja parcourir toutes les colonnes et a chaque passage val prend le nom de ta colonne. Donc tu peux avoir le nombre de colonnes et leur nom.

    Dim val As Variant
    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Dim fld As DAO.Field


    Set db = CurrentDb

    Set tdf = db.TableDefs("Table1")
    For Each fld In tdf.Fields
    val = fld.Name
    Next fld

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    Oui bien sur, j'avais pas vue comme sa :p
    Mais sa marche nickel merci Mr.Mof pour ton aide

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/08/2012, 16h07
  2. Réponses: 1
    Dernier message: 31/08/2009, 22h48
  3. [AC-2000] Récupérer la valeur d'un champs dans une liste ou texte
    Par falco- dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/05/2009, 15h03
  4. [MySQL] Récupérer la valeur d'un champ d'une table juste après l'avoir inséré
    Par bodysplash007 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/05/2007, 22h24
  5. Récupérer la valeur d'un champ dans une requête
    Par romaintaz dans le forum JDBC
    Réponses: 7
    Dernier message: 18/08/2006, 09h13

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