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 un objet d'une BDD 1 vers une BDD 2 puis ouvrir cette BDD 2 dans une autre instance.


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 84
    Points
    84
    Par défaut Copier un objet d'une BDD 1 vers une BDD 2 puis ouvrir cette BDD 2 dans une autre instance.
    Bonjour,

    Voici ce que je veux faire

    Copier un objet (formulaire ) dans une autre bd et ouvrir cette bd ensuite.

    En ce moment je réussi à copier l'objet voulu dans une autre bd sélectionnée mais je suis incapable de l'ouvrir ensuite. C'est comme si elle ouvrait et fermait tout d'un trait

    J'ai essayé plusieurs méthodes sans succès.

    Merci pour votre aide et vos suggestions



    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
    Private Sub cmdCopierObjet_Click()
    Dim BdDev As Object
    Dim vChoixACopier As String
     
     
    'Vérifie si une BD a été sélectionnée dans la liste déroulante
    If Nz(Me.ProjetACopier, "") = "" Then Exit Sub
     
     
    'récupère le path complet de l'emplacement de la bd provenant de la liste déroulante
    'et le met dans la variable
    vChoixACopier = Me.ProjetACopier.Column(1)
     
     
     
    On Error Resume Next
     
    'valide si la BD est ouverte
    Set BdDev = GetObject(vChoixACopier)
    If BdDev Is Nothing Then
        'La bd est fermé
    Else
        'MsgBox La bd est ouverte et il faut la fermer avant de copier le formulaire
        BdDev.Quit
     
    End If
     
    'copie l'objet dans la base de donnée en développement
    DoCmd.CopyObject vChoixACopier, "_frmTestCopy", acForm, "modele_frmZoneDeListe1"
     
     
     
     
    Dim accapp As Access.Application
    Set accapp = New Access.Application
    accapp.OpenCurrentDatabase (vChoixACopier)
    accapp.visible = True
    DoEvents
     
    'Dim bdTravail As Database
    'Set bdTravail = DBEngine.Workspaces(0).OpenDatabase("C:\CloudGuy\Dropbox\Boite à outil Access\Test.accdb")
     
     
    End Sub

  2. #2
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut ouvrir une autre bd access sans fermer celle déjà ouverte
    Théoriquement, on ne peut pas ouvrir 2 db dans une même session Access; il faut nécessairement ouvrir 2 sessions distinctes Access, une pour chaque DB; je n'ai pas lu tout votre code, mais dès que vous fermez la db en cours via vba, la suite de votre code ne s'exécutera plus. Mais il est probable que je n'aie pas bien saisi le problème!

  3. #3
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Le mieux dans ce cas est d'exporter le formulaire (en texte) et de l'importer dans l'autre base...
    Il faudra toutefois vérifier qu'il n'existe pas déjà, auquel cas il faudra supprimer l'ancien d'abord.
    Enfin, comme le souligne Jakani, une session Access = Une application ouverte.

    par curiosité comme ça : pourquoi vouloir copier un formulaire ?

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  4. #4
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour

    j'ai rouve ce truc sur un site US

    1) tu crees un fichier texte extension .BAT qui comprend la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    start msaccess D:\Chemin de la base access\....\...\Nomde la base.accdb
    Note: il y a des techniques VBA pour ecrire dans un fichier texte


    2) tu lances ce fichier par une commande VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Command60_Click()
        Shell "D:\chemin du fichier texte\..\..\Nom du fichier texte.bat "
    End Sub

    et ca marche: le systeme sait qu'un fichier .BAT correspond a une commande systeme

  5. #5
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par accessisgood Voir le message
    1) tu crees un fichier texte extension .BAT qui comprend la ligne suivante
    start msaccess D:\Chemin de la base access\....\...\Nomde la base.accdb

    Note: il y a des techniques VBA pour ecrire dans un fichier texte
    2) tu lances ce fichier par une commande VBA
    Private Sub Command60_Click()
    Shell "D:\chemin du fichier texte\..\..\Nom du fichier texte.bat "
    End Sub
    et ca marche: le systeme sait qu'un fichier .BAT correspond a une commande systeme
    Euh mais, à quoi cela correspond, à quoi ça sert et qu'est ce que ça fait ?
    Merci de répondre aux message avec des points qui sont utiles à la question posée !

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  6. #6
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Voici une procedure VBA pour ouvrir une base access a partir de son chemin complet

    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
    Private Sub Exemple()
        Call LancerBaseAccess("D:\NotBackedUp\SMD Data\_Prod_20160306\OracleMI.accdb")
    End Sub
     
     
    Function LancerBaseAccess(ByVal AccessPath As String)
        Dim fso     As FileSystemObject
        Dim fFile   As File
        Dim ts      As TextStream
     
        Set fso = CreateObject("Scripting.FileSystemObject")
        fso.CreateTextFile CurrentProject.Path & "\LancerBaseAccess.BAT"
        Set fFile = fso.GetFile(CurrentProject.Path & "\LancerBaseAccess.BAT")
     
        Set ts = fFile.OpenAsTextStream(ForAppending)
     
        ts.WriteLine "start msaccess """ & AccessPath & """"
     
        ts.Close
        Set ts = Nothing
        Set fFile = Nothing
        Set fso = Nothing
     
        Shell CurrentProject.Path & "\LancerBaseAccess.BAT"
     
    End Function

  7. #7
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par accessisgood Voir le message
    Voici une procedure VBA pour ouvrir une base access a partir de son chemin complet
    Désolé d'insister mais as-tu lu le besoin initial ?
    Citation Envoyé par GuyDuLac
    Copier un objet (formulaire ) dans une autre bd et ouvrir cette bd ensuite.
    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  8. #8
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    ben oui:

    ouvrir une autre bd access sans fermer celle déjà ouverte... c'est bien le titre de la discussion

  9. #9
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Mais pour ouvrir deux bases de données, il suffit de lancer deux Shell() distincts, chacune ayant son PID. Pas besoin de Bat.

    Et de toute façon, le problème n'est pas d'ouvrir deux bases de données mais de copier un objet de l'une vers l'autre.

    Code accessisgood : Sélectionner tout - Visualiser dans une fenêtre à part
    c'est bien le titre de la discussion
    Oui, c'est le titre mais pas la demande et par ailleurs, une (trop) grande partie des posteurs ne savent titrer correctement leur demande...

    Enfin, le demandeur initial ne se manifestant pas, je pense qu'il est inutile de continuer.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

Discussions similaires

  1. Réponses: 8
    Dernier message: 23/01/2024, 21h15
  2. Ouvrir une autre base Access depuis VBA
    Par Elnino38 dans le forum VBA Access
    Réponses: 6
    Dernier message: 12/03/2015, 15h15
  3. fermer une fenêtre et en ouvrir une autre
    Par edson15 dans le forum Windows
    Réponses: 1
    Dernier message: 03/06/2007, 10h44
  4. Réponses: 2
    Dernier message: 11/09/2006, 10h17
  5. Réponses: 6
    Dernier message: 09/02/2006, 17h46

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