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 :

Récupérer le chemin d'accés d'une base dorsale


Sujet :

VBA Access

  1. #1
    Membre confirmé Avatar de SnakeCharmer
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 117
    Par défaut Récupérer le chemin d'accés d'une base dorsale
    Bonjour,

    J'ai développé une base utilisée en réseau. Dans cette base, je dialogue avec des fichiers Excel. J'ai fractionné la base afin que les tables soient communes et qu'ensuite la frontale soit sur chaque poste de travail.
    Pour dialoguer avec les fichiers excel j'avais utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim xlapp As Excel.Application
    Dim sht As Excel.Worksheet
    Set xlapp = CreateObject("Excel.Application")
    With xlapp
    Dim sPath As String
            sPath = CurrentProject.Path
        Set wbk = .Workbooks.Open(sPath & "\chemin\fichier.xls")
    'traitement
    end with
    Cependant ici, il récupére le chemin d'accés a la base frontale. Je voudrais c récupérer le chemin de la base dorsale, ainsi les fichiers excel aussi seront en réseau.
    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strCheminCompletDorsale = CurrentDb.TableDefs("UneTableDeLaDorsale").Connect
    strCheminCompletDorsale = Right(strCheminCompletDorsale, Len(strCheminCompletDorsale) - InStr(1, strCheminCompletDorsale, "DATABASE=") - 8)
    Domi2

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 254
    Par défaut
    Salut,

    La solution de Domi2 est parfaite et sur 2 lignes, le problème c'est que tu dois placer le nom d'une table, ça ne pose pas de problème mais bon.

    Voici une seconde méthode qui parcours les tables liées et trouve donc la dorsale par la liaison.

    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
    Public Sub Chemin_Appli()
        'Récupération du chemin de la Base des DATA .mdb
        'en parcourant les tables liées, on récupère le chemin
     
        Dim X As String, i As Integer
        Dim Path As String
        Dim VarTableLiée As String
        Dim db As Database, Ret
     
        'Déclaration des variables
        Dim dbBase As DAO.Database
        Dim tbdTables As DAO.TableDef
        'Instancie la base courrante
        Set dbBase = CurrentDb
     
        'Boucle Parcourant toutes les tables de la Bdd en cours
        For Each tbdTables In dbBase.TableDefs
            'Teste l'attribut de la table pour savoir si c'est une table liée
            If tbdTables.Attributes And dbAttachedTable Then
                VarTableLiée = tbdTables.Name    'Donne le nom de la table à la variable
            End If
        Next tbdTables
     
        Set db = CurrentDb()
        Ret = db.TableDefs(VarTableLiée).Connect
        CheminAppli_Base_Data = Right(Ret, Len(Ret) - (InStr(1, Ret, "DATABASE=") + 8))
    End Sub
    Merci à ??? pour le code

    A+

  4. #4
    Membre confirmé Avatar de SnakeCharmer
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 117
    Par défaut
    Je veux vous croire que ça marche ! Je pense que oui
    Mais... j'ai une erreur de compilation sur Right (projet ou bibliothéque introuvable)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Dim sPath As String
     
            sPath = CurrentDb.TableDefs("Brut").Connect
            sPath = Right(sPath, Len(sPath) - InStr(1, sPath, "DATABASE=") - 8)
     
        Set wbk = .Workbooks.Open(sPath & "\Chemin\fichier.xls")
    Pour info, je suis sur access 2003

  5. #5
    Membre confirmé Avatar de SnakeCharmer
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 117
    Par défaut
    Bonjour,

    J'ai réglé mon problème, ou disons qu'il a changé. Avec ce code, je récupére le chemin complet de la base. Or je voudrais récupérer juste le chemin du dossier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim sPath
    sPath = CurrentDb.TableDefs("Bruts").Connect
    sPath = Right(sPath, Len(sPath) - InStr(1, sPath, "DATABASE=") - 8)
     
        Set wbk = .Workbooks.Open(sPath & "\sous-dossier\fichier.xls")
    La solution n'est pas bien loin mais ne veut pas s'montrer ! ^^

  6. #6
    Expert confirmé
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Par défaut
    Bonjour,

    Essaie comme ceci :

    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
        Dim strCheminDorsale As String
        Dim strRepertoireDorsale As Sting
     
        'Recherche le nom du répertoire dans lequel est installée la base de données dorsale, ainsi que le nom du fichier
        strCheminDorsale = CurrentDb.TableDefs("Brut").Connect
        strCheminDorsale = Right(strCheminDorsale, Len(strCheminDorsale) - InStr(1, strCheminDorsale, "DATABASE=") - 8)
     
        'Recherche le nom du répertoire et des sous-répertoires
        If Right(strCheminDorsale, 1) = "\" Then
     
            strRepertoireDorsale = strCheminDorsale
     
        Else
     
            strRepertoireDorsale = Left(strCheminDorsale, InStrRev(strCheminDorsale, "\"))
     
        End If
     
        'Répertoire d'installation de la dorsale
        strRepertoireDorsale = strRepertoireDorsale
    Domi2

  7. #7
    Membre confirmé Avatar de SnakeCharmer
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 117
    Par défaut
    Merci Domi, ça donne le résulatta qu'il faut. Je l'ai un peu aménagé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim strCheminDorsale As String
     
    'Recherche le nom du répertoire dans lequel est installée la base de données dorsale
    strCheminDorsale = CurrentDb.TableDefs("Bruts").Connect
    strCheminDorsale = Right(strCheminDorsale, Len(strCheminDorsale) - InStr(1, strCheminDorsale, "DATABASE=") - 8)
    strCheminDorsale = Left(strCheminDorsale, InStrRev(strCheminDorsale, "\")

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/03/2015, 10h36
  2. Réponses: 1
    Dernier message: 16/10/2012, 16h02
  3. Réponses: 1
    Dernier message: 02/07/2010, 11h10
  4. Réponses: 4
    Dernier message: 02/09/2009, 09h23
  5. Réponses: 4
    Dernier message: 06/03/2008, 17h10

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