Chemin d'accès adaptable

Résolu
vinzfloz Messages postés 4 Date d'inscription lundi 12 juin 2006 Statut Membre Dernière intervention 26 juin 2010 - 27 oct. 2007 à 14:19
vinzfloz Messages postés 4 Date d'inscription lundi 12 juin 2006 Statut Membre Dernière intervention 26 juin 2010 - 27 oct. 2007 à 19:29
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

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
27 oct. 2007 à 15:16
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²
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
27 oct. 2007 à 14:41
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.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
27 oct. 2007 à 17:08
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
0
vinzfloz Messages postés 4 Date d'inscription lundi 12 juin 2006 Statut Membre Dernière intervention 26 juin 2010
27 oct. 2007 à 19:29
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
0
Rejoignez-nous