Chemin d'accès adaptable [Résolu]

Signaler
Messages postés
4
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
26 juin 2010
-
Messages postés
4
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
26 juin 2010
-
Bonjour à tous,


J'aimerais optimiser un petit outil que j'utilise au travail, (reporting financier).


J'ai réalisé la macro ci-dessous, qui récupère certaines données désirées dans une base Access et les affichent sur une feuille Excel.

Je n'ai aucun problème de mise à jour lorque le fichier et la base Acces restent dans un répertoire fixe. Hors chaque mois, je dois les changer de répertoire ce qui rend les chemin d'accès de la macro inuexploitables.
J'aimerais savoir comment améliorer cela, pour ne pas avoir à modifier dans la macro le chemin d'accès aux fichiers, cela doit être possible, sachant que les 2 fichiers seront toujours positionnés dans le même repertoire, seul le nom de ce répertoire peut être modifié).

Voici mon code :

With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=MS Access Database;DBQ=C:\Documents and Settings\frq03316\Desktop\License Agile
Integration\LicenseData2008.mdb;DefaultDir=C:\Documents and Settings\frq03316\Desktop\License Agile Integration;DriverId=" _         'Comment rendre flexible dans la macro ce chemin d'Accès ?

        ), Array("25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;")), Destination:= _
        Range("C7"))
        .CommandText = Array( _
        "SELECT ExchangeRate.Currency, ExchangeRate.`1`, ExchangeRate.`2`, ExchangeRate.`3`, ExchangeRate.`4`, ExchangeRate.`5`, ExchangeRate.`6`, ExchangeRate.`7`, ExchangeRate.`8`, ExchangeRate.`9`, Exchange" _
        , _
        "Rate.`10`, ExchangeRate.`11`, ExchangeRate.`12`" & Chr(13) & "" & Chr(10) & "FROM `C:\Documents and Settings\frq03316\Desktop\License Agile Integration\LicenseData2008`.ExchangeRate ExchangeRate" _
        )
        .Name = "ExchangeRateUSD"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With

Je vous remercie d'avance pour vos idées

Vinz

4 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Si la base est toujours dans le même répertoire que l'application Excel, utilise ThisWorkbook.Path

With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=MS Access Database;DBQ=" & ThisWorkbook.Path & "\LicenseData2008.mdb;DefaultDir=" & ThisWorkbook.Path & ";DriverId="

En principe, ça devrait bien fonctionner.

MPi²
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonjour,
Crée donc des sous-répertoires du répertoire principal (toujours fice et en tout état de cause celui de ton application)  don le nom est composé du mois et de l'année.

Tu pourras de cette manière toujours t'y référer sans aucune faille.
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
ou sinon au début de la macro, ouvrir une boite de dialogue ou l'utilisateur sera obligé d'indiquer la base de donnée à utiliser.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
4
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
26 juin 2010

Merci à tous les 3.

MPi² j'ai appliqué ta solution, ca fonctionne parfaitement, j'aurais du y penser, ca va faciliter grandement l'utilisation.

Merci encore.

Vinz