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

Access Discussion :

ouverture 2ème base en gardant base 1 ouverte


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 15
    Points : 10
    Points
    10
    Par défaut ouverture 2ème base en gardant base 1 ouverte
    Bonjour tout le monde,

    J'ai une base de données 1 (appelée 'gen'), et je souhaiterais créer un code
    sur click bouton qui me permette d'ouvrir la base de données 2 (appelée
    'sup') tout en gardant la base 1 ouverte.

    j'ai essayé plusieurs codes, entre autres le suivant, mais à chaque fois, ma
    base 1 se ferme.

    quote
    -------

    Private Sub GEN_DB_Click()

    Bas = "D\DB\sup.mdb"

    SendKeys "^o" & Bas & "~", False

    End Sub

    unquote
    ----------

    Merci par avance pour votre précieuse aide.
    A.M.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,
    Citation Envoyé par questions
    j'ai essayé plusieurs codes, entre autres le suivant, mais à chaque fois, ma base 1 se ferme.
    C'est normal !
    Microsoft Access ne sait gérer qu'une seule BD à la fois.

    Citation Envoyé par questions
    [...] et je souhaiterais créer un code
    sur click bouton qui me permette d'ouvrir la base de données 2 (appelée 'sup') tout en gardant la base 1 ouverte.
    Tu dois lancer une autre instance d'Access qui affichera ton autre BD.

    Maintenant, si tu veux tout dans une seule instance d'Access, tu peux envisager d'attacher dans 'gen.mdb' les tables externes situées dans 'sup.mdb'.

    Dans tous les cas, la FAQ devrait te donner des éléments de réponse.

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 15
    Points : 10
    Points
    10
    Par défaut Tu as raison JBO
    Bonjour JBO et merci pour ta réponse.

    Tu as raison lorsque tu dis que Access ne sait gérer qu'une seule base à la fois, en fait je me suis mal exprimé, la base 'sup' devrait s'ouvrir dans une nouvelle fenêtre access tout en gardant la base 'gen' ouverte.

    J'ai justement tiré ce code de la FAQ access, mais j'ai toujours la base 'gen' qui se ferme.

    Etrange, mais merci encore pour avoir répondu.

    A.M.

  4. #4
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    =JBO= a raison concernant les instances d'Access. Il te faut ouvrir une seconde fois Access, ta seconde base s'ouvrira dans une fenêtre. Avec le code si dessous ta nouvelle instance s'ouvrira en plein écran.

    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
    Option Compare Database
     
    Private Declare Function apiSetForegroundWindow Lib "user32" _
                Alias "SetForegroundWindow" _
                (ByVal hwnd As Long) _
                As Long
     
    Private Declare Function apiShowWindow Lib "user32" _
                Alias "ShowWindow" _
                (ByVal hwnd As Long, _
                ByVal nCmdShow As Long) _
                As Long
     
    Private Const SW_MAXIMIZE = 3
    Private Const SW_NORMAL = 1
    '
     
     
    Function Open_base()
     
            Set objAccess = New Access.Application
            With objAccess
                lngRet = apiSetForegroundWindow(.hWndAccessApp)
                lngRet = apiShowWindow(.hWndAccessApp, SW_NORMAL)
                lngRet = apiShowWindow(.hWndAccessApp, SW_MAXIMIZE)
                .OpenCurrentDatabase "C:\Mabase.mdb"
            End With
     
    End Function
    Il te reste à renseigner le chemin de ta base et appeler la fonction Open_base

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Citation Envoyé par questions
    J'ai justement tiré ce code de la FAQ access, mais j'ai toujours la base 'gen' qui se ferme.
    Je n'ai pas vu ce code dans la FAQ , et ça vaut peut être mieux .

    Sinon, la proposition de Dolphy35 utilise une technique de contrôle d'une application par programmation: alias OLE Automation.
    Cette technique est très puissante !

    On peut aussi utiliser simplement la fonction Shell offerte par VBA.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell "msaccess.exe D:\DB\sup.mdb", vbMaximizedFocus
    Et là, la FAQ est pleine d'exemples

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 15
    Points : 10
    Points
    10
    Par défaut merci a vous tous pour votre aide
    je suis pas vraiment doué avec access, et malgré vos conseils, je n'y arrive toujours pas. J'ai un message d'erreur lorsque je click sur le bouton qui me sert à ouvrir la base 'sup'.

    J'ai essayé avec la solution de JBO

    Shell "msaccess.exe D:\DB\sup.mdb", vbMaximizedFocus

    mais le message d'erreur est le suivant :

    "La Ligne de commande utilisée pour lancer Microsoft Office Access comporte une option que Microsoft Office Access ne reconnait pas. ???? et ensuite je dois cliquer 15 fois ok ???

    Avez-vous une idée svp ? Je suis vraiment désolé de vous embêter comme ça et vous devez probablement me prendre pour un nul d'access et vous avez bien raison...

    AM

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Citation Envoyé par questions
    J'ai essayé avec la solution de JBO

    Shell "msaccess.exe D:\DB\sup.mdb", vbMaximizedFocus

    mais le message d'erreur est le suivant :

    "La Ligne de commande utilisée pour lancer Microsoft Office Access comporte une option que Microsoft Office Access ne reconnait pas. ????
    Quel est le chemin complet du fichier mdb que tu veux ouvrir ?
    Il est bien sur le disque [D:] dans le répertoire \DB ?

    Peux-tu coller ton véritable code STP ?

  8. #8
    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
    Une troisième méthose qui vient de la FAQ Access.http://access.developpez.com/faq/?pa...n#shellexecute
    Ouvrir un fichier par le programme qui lui est associé.
    Exemple , j'ouvre bd_2.mdb dans le même répertoire que la base qui exécute ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
     
    Private Sub b_OuvrirBase_Click()
    Dim DBtoOpen As String
     
      DBtoOpen = CurrentProject.Path & "\bd_2.mdb" & vbNullChar
      ShellExecute 0, "Open", DBtoOpen, "" , "" , 1
     
    End Sub

  9. #9
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 15
    Points : 10
    Points
    10
    Par défaut JBO, je crois que j'ai compris le pourquoi du comment
    Je crois que j'ai compris le pourquoi du comment.

    En fait, ma base 'sup' est bien dans le disque 'D' (chemin : D:\DB\sup.mdb), mais ma base 'gen' est sur un disque externe.

    Est-ce le fait que les deux bases ne se trouvent pas dans le même répertoire ?

    Merci pour tout
    AM

Discussions similaires

  1. Ouverture formulaire d'une autre base de données
    Par aba_tarn dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/07/2007, 08h43
  2. [VBA] Ouverture formulaire d'un autre base de données
    Par Guillaume 78 dans le forum VBA Access
    Réponses: 4
    Dernier message: 24/07/2007, 11h26
  3. Réponses: 2
    Dernier message: 11/09/2006, 10h17
  4. Réponses: 2
    Dernier message: 31/08/2006, 09h38
  5. empêcher l'ouverture de la fenêtre de base de données
    Par jm vangoethem dans le forum Access
    Réponses: 2
    Dernier message: 20/01/2006, 18h47

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