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 :

Copier enregistrement d'une table à une autre


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 37
    Points : 26
    Points
    26
    Par défaut Copier enregistrement d'une table à une autre
    Bonjour le forum,

    Je me demandais s'il était possible de copier une ligne complète d'une table dans une autre table, sachant que toutes les colonnes sont les mêmes et qu'il n'y a pas d'index ou de liens entre les tables?

    Je m'y prends présentement en ajoutant un enregistrement et je vais chercher chaque champ de la table source en les faisant correspondre avec les champs de la table finale dans le code ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    with tblfinale
    .addnew
    ![champ1]=tblsource[Champcorrespondant]
    ![champ2]=tblsource[Champcorrespondant]
    ... etc
    .update
    Y a-t-il un moyen de copier l'enregistrement au complet et de le coller dans une autre table? J'ai vu des méthodes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    docmd.runcommand accmdcopy
    docmd.runcommand accmdpaste
    ou quelque chose du genre sur ce forum mais je ne sais pas comment l'appliquer.

    J'ai donc besoin de votre aide et je vous remercie d'avance pour toute piste de solution que vous pourrez m'apporter.

    Bonne fin de journée!

    Gringo

  2. #2
    Membre régulier Avatar de ofinot
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Doubs (Franche Comté)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 98
    Points : 100
    Points
    100
    Par défaut
    Bonsoir,

    cela est faisable en SQL avec une requête du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    dim sql as string
     
    sql = "Insert into TB2 (champ1, champ2 ...) Values Select * from TB1 where id1 = " & tavaleur & ";"
    Tu exécute ensuite ta requête à l'aide de la fonction décrite ici:
    http://access.developpez.com/faq/?page=SQL#qryActions


  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 37
    Points : 26
    Points
    26
    Par défaut
    Salut ofinot,

    Merci pour la réponse. Je vais voir de ce coté ce que je peux faire.

    J'aimerais quand même que l'un d'entre vous, si possible, me renseigne sur le code que j'ai vu mais dont je ne sais pas comment l'appliquer, c'est-à-dire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    docmd.runcommand accmdcopy
    docmd.runcommand accmdpaste
    Merci!

    Gringo

  4. #4
    Membre régulier Avatar de ofinot
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Doubs (Franche Comté)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 98
    Points : 100
    Points
    100
    Par défaut
    D'après ce que j'ai vu, ces méthodes ne correspondent pas à ce que tu recherches.

    Va voir du coté de la FAQ

  5. #5
    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 759
    Points
    7 759
    Par défaut
    Bonsoir,

    la méthode par le presse-papier suppose que l'on passe par l'interface d'Access et que l'on manipule des feuilles de données.

    Exemple
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ' Copie 3e enregistrement de table tblCli3 dans table tblCli2
    DoCmd.OpenTable "tblCli3"
    DoCmd.GoToRecord , , acGoTo, 3
    DoCmd.RunCommand acCmdSelectRecord
    DoCmd.RunCommand acCmdCopy
     
    DoCmd.OpenTable "tblCli2"
    DoCmd.GoToRecord , , acNewRec
    DoCmd.RunCommand acCmdSelectRecord
    DoCmd.RunCommand acCmdPaste
    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.Close acTable, "tblCli3"
    De plus il faut que les colonnes soient dans le même ordre dans les deux feuilles de données.

    Je préfère ta méthode par recordset.
    Tu peux peut-être l'optimiser avec une boucle sur les champs source pour effectuer la copie champ à champ.
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim strChp As String, i As Integer
     
    With tblfinale
        .AddNew
        For i = 0 To tblsource.Fields.Count - 1
            strChp = tblsource.Fields(i).Name
            .Fields(strChp) = tblsource(strChp)
        Next
        .Update
    End With
    A+

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 37
    Points : 26
    Points
    26
    Par défaut
    Bonjour vous tous,

    Merci pour vos réponses. Merci spécialement à LedZeppII, tes explications sont très claires. Et ta solution par boucle est parfaite. Je n'y aurais pas pensé mais ça pourra s'appliquer dans mon cas.

    Votre aide est appréciée!

    Gringo

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

Discussions similaires

  1. [AC-2010] Enregistrer Valeurs Champ d'une table à une autre
    Par piwa6291 dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/03/2015, 14h13
  2. Réponses: 3
    Dernier message: 05/03/2010, 21h28
  3. Réponses: 4
    Dernier message: 06/03/2007, 12h00
  4. Copier un enregistrement d'une table à une autre ?
    Par cadman dans le forum Access
    Réponses: 5
    Dernier message: 21/02/2007, 13h44
  5. enregistrement de donnees d'une table a une autre
    Par tibiurs dans le forum Access
    Réponses: 6
    Dernier message: 20/12/2005, 17h21

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