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/Coller ou importer tables entre deux bases Access


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 23
    Points : 14
    Points
    14
    Par défaut Copier/Coller ou importer tables entre deux bases Access
    Bonjour bonjour,

    Je possède deux bases Access :
    - la première me permet d'importer des données (à partir de fichiers excels)
    - la seconde utilise les données de la première pour effectuer des calculs

    Je désire donc importer les 14 tables de ma première base vers ma deuxième base.

    J'ai donc écrit le code suivant, qui était censé supprimer les tables actuelles et importer les nouvelles (mêmes noms, mêmes structures) :

    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
    Public Function ImportTables()
     
        'Creation  of an array contening the tables that we want to import
          Dim a(1 To 14) ' 14 lines
      '------ remplissage du tableau a()
      a(1) = "T_A"
      a(2) = "T_AC"
      a(3) = "T_B"
      a(4) = "T_D"
      a(5) = "T_ISR"
      a(6) = "T_I"
      a(7) = "T_M"
      a(8) = "T_N"
      a(9) = "T_P"
      a(10) = "T_R"
      a(11) = "T_RM"
      a(12) = "T_S"
      a(13) = "T_TP"
      a(14) = "T_T"
     
     
     
        'Delete tables
        For i = 1 To 14
            strTableName = a(i)
            DoCmd.DeleteObject acTable, strTableName
        Next i
     
     
        'Import new tables
        Dim fd As Office.FileDialog
        Dim db As DAO.Database
     
         ' Creer un objet FileDialog
      Set fd = Application.FileDialog(msoFileDialogOpen)
     
        ' Titre de la boite de dialogue
      fd.Title = "Select a file..."
     
           ' Ne pas autoriser la selection multiple
         ' (donc 1 seul fichier est selectionnable a la fois)
      fd.AllowMultiSelect = False
     
      ' Afficher la boite de dialogue
    If fd.Show() Then
     
     
     
        For i = 1 To 14
            strTableName = a(i)
            DoCmd.TransferDatabase acImport, "Microsoft Access", _
        fd.SelectedItems(1), acTable, strTableName, strTableName
        Next i
     
     MsgBox "The tables have been successfully imported."
     
     
    End If
     
    End Function

    Le code marcherait très bien... s'il n'y avait pas de liaisons dans ma seconde base. En effet, quand j'exécute le code, j'ai le message d'erreur suivant :
    "Vous ne pouvez pas supprimer la table T_A, elle intervient dans une ou plusieurs relations".

    Auriez-vous une autre idée pour importer mes données ? Avec du copier/coller d'enregistrement peut-être ?

    Sachant que j'ai besoin de pourvoir changer facilement mon fichier source (ie la première base), donc le principe de juste cliquer sur un bouton et choisir la base à importer m'allait très bien.


    Merci beaucoup !

    Camilla



    EDIT : j'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.CopyObject fd.SelectedItems(1), strTableName, acTable, strTableName
    même problème.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    https://www.developpez.net/forums/d1...t/#post9306657

    tu ordonnance ton tableau en fonction de tes relation de la plus basse dans l'arborescence à la pus haute!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     a(2) = "T_A"
      a(1) = "T_AC"
    ou tu définis les contrainte de tes relation en supprimer en cascade mais c'est mois cool, une erreur et op...

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    C'est parfait, le DELETE et le INSERT INTO fonctionnent à merveille !

    Je n'ai pas bien compris comment intervenait l'arborescence, mais même sans y toucher ça marche très bien.

    Merci !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je n'ai pas bien compris comment intervenait l'arborescence,
    c'est ce que tu as obligatoirement fait!

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

Discussions similaires

  1. Synchonisation bidirectionnelle d'une table entre deux bases
    Par soazig dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/03/2011, 12h30
  2. attacher des tables entre deux bases
    Par guaguanco dans le forum Modélisation
    Réponses: 2
    Dernier message: 24/06/2010, 04h32
  3. copier la même table entre deux bases identiques
    Par nadir3700 dans le forum Requêtes
    Réponses: 0
    Dernier message: 30/12/2009, 17h40
  4. Transfert de tables entre deux bases MySQL
    Par baaron dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 31/01/2006, 23h24
  5. copie de tables entre deux bases
    Par rlgrand dans le forum Débuter
    Réponses: 3
    Dernier message: 27/12/2004, 12h12

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