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 :

Traiter données de plusieures tables en VBA


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Par défaut Traiter données de plusieures tables en VBA
    Bonjour,
    je me lance novice en VB sous access2007.
    J'ai une table "table1" avec une valeur numerique pour chaque record, disons 10, dans un champ "Nb"
    J'ai une table "table2" liée à la table 1 par ID, avec pour chaque record, 4 champs fixes FR, IT, ES, UK, ayant une valeur %, disons simple (25, 25, 25, 25).
    Je souhaiterai dans une 3e table "table3" remplir automatiquement les champs si
    si table1.NB <>0 alors
    si table2.FR <>0 alors table3.NB = 10 * 25% on cree un record table3
    si table2.IT<>0 alors table3.NB = 10 * 25% on cree un 2e record table3
    si table2.ES <>0 alors table3.NB = 10 * 25% on cree un 3e record table3
    si table2.UK<>0 alors table3.NB = 10 * 25% on cree un 4e record table3
    sinon on passe au suivant table1.NB
    et etc...

    merci d'avance pour votre aide

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Par défaut
    Renseigne-toi sur les recordset notamment la bibliothèque DAO. Il y a un tuto ici. Avec ça tu peux parcourir les enregistrements, mettre tes conditions en place et remplir ta troisième table. Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Sub Test()
        Dim rst As DAO.Recordset
        Dim strSQL As String
     
        strSQL = "SELECT * FROM MaTable;"
        Set rst = CurrentDb.OpenRecordset(strSQL)
     
        While Not rst.EOF
            If rst("monChamps") = maValeur Then
                CurrentDb.Execute "INSERT INTO MaTable2 (monChamps2) VALUES (" & rst("monChamps") &  "*2);"
            End If
            rst.moveNext
        Wend
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Par défaut
    merci pour l'info, je vais regarder, je reviens si besoin...
    A+

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Par défaut
    Désolé, mais j'y arrive pas...

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Par défaut
    je bloque complétement...
    j'ai essayé ça sans resultat et avec une erreur:

    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
    Sub BDD()
        Dim Db As DAO.Database
        Dim rst As DAO.Recordset
        Dim rst2 As DAO.Recordset
        Dim rst3 As DAO.Recordset
        Set Db = CurrentDb
        Set rst = Db.OpenRecordset("Tbl_1", dbOpenDynaset)
        Set rst2 = Db.OpenRecordset("Tbl_2", dbOpenDynaset)
        Set rst3 = Db.OpenRecordset("Tbl_3", dbOpenDynaset)
        While Not rst.EOF
            If rst("NB1") > 0 Then
               rst3.AddNew
               rst3("NB3") = (rst("NB1")* rst2("NB2FR")
               rst3.Update
            End If
            rst.MoveNext
     
        Wend
        rst.Close
        Set rst = Nothing
    End Sub
    en fait, je souhaiterai alimenter les champs de la table3 vide (champs crées) en fonction des conditions de certains champs table1 et table2
    table 1 (Code, Nom1, NB1,....)
    table 2 (Code, Nom2, NB2FR,NB2IT,NB2ES,NB2UK...)
    table 3 (Code, PAYS, NB3) pour obtenir ceci :
    Code PAYS NB3
    AAA NB2FR valeurNB1 * valeur NB2FR
    AAA NB2IT valeurNB1 * valeur NB2IT
    AAA NB2ES valeurNB1 * valeur NB2ES
    AAA NB2UK valeurNB1 * valeur NB2UK
    BBB NB2FR valeurNB1 * valeur NB2FR
    BBB NB2IT valeurNB1 * valeur NB2IT
    BBB NB2ES valeurNB1 * valeur NB2ES
    BBB NB2UK valeurNB1 * valeur NB2UK
    .....
    AAA, BBB, etc... sont tous les enregistrement de la table 1

    on balaye 1 a 1 tous les enregistrements table1 et a chaque enregistrement on crée à chaque fois 4 enregistrements dans table 3 en remplissant les champs

    Merci car là je suis vraiment perdu...

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rst3("NB3") = (rst("NB1")* rst2("NB2FR"))
    il manque une parenthèse fermante sur ta ligne de code.

    Sinon le reste du code semble correct.

    Pour info rst3("NB3") peut aussi s'écrire rst3![NB3] ou rst3.fields("NB3")A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. Réponses: 19
    Dernier message: 28/07/2006, 10h57
  2. [Débutant] Parcourir les données de plusieurs tables.
    Par SmokE dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/01/2006, 16h55
  3. Réponses: 10
    Dernier message: 15/09/2005, 12h31
  4. Réponses: 7
    Dernier message: 12/10/2004, 16h43
  5. Réponses: 6
    Dernier message: 15/04/2004, 11h04

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