Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

changer la source d'une requête

2 réponses
Avatar
Pierre-Yves
Bonjour,

J'effectue actuellement des requêtes sous excel à partir d'une base Access
je souhaite modifier le chemin d'accès à la base Access Hbtabord.mdb.
Pour ce faire je lance la macro suivante qui change la connection.
Elle s'effectue normalement. Par contre, lorsque j'actualise les données. Il
me met C:\hbTabord.mdb introuvable.
Quelequ'un aurait-il une solution?

merci

Sub Query_Et_NomFichierModifie()

Dim OldName As String, NewName As String
Dim Sh As Worksheet, Qt As QueryTable
Dim CH As String

' À saisir manuellement si nécessaire...
OldName = "C:\hbTaBord.mdb"
NewName = "H:\hbTaBord.mdb"

For Each Sh In Worksheets
For Each Qt In Sh.QueryTables
CH = Qt.Connection
Qt.Connection = Replace(Qt.Connection, OldName, NewName, , ,
vbTextCompare)
Qt.Refresh True
Next
Next
'Sauvegarde du fichier
ThisWorkbook.Save
Set Sh = Nothing: Set Qt = Nothing

End Sub

2 réponses

Avatar
michdenis
Bonjour Pierre-Yves,

Le nom du fichier source apparaît à 2 endroits stratégiques dans une connection de type obdc :

A ) Dans la Propriété de "commandText" qui est la chaîne de caractères écrites en SQL qui définit la requête
B ) Dans la propriété "Connection" qui représente la chaîne de caractère définissant la liaison entre les 2 fichiers

Si tu as modifié le nom de ton fichier source, tu devras modifier les 2 chaînes de caractères ci-haut mentionnées.

Dans ta procédure, tu devras tenir compte de ceci :
La chaîne de connection, on utilise le nom du fichier et son EXTENSION
comme ceci : DBQ=c:Mes documentsComptoir.mdb, l'extension du fichier dans la chaîne "CommandText" n'est pas inscrite
dans la chaîne de texte :" FROM `c:Mes documentsComptoir`.Fournisseurs "

Sans avoir testé, tu devrais définir tes variables sans les extensions des fichiers

OldName = "C:hbTaBord"
NewName = "H:hbTaBord"

Et faire le remplacement dans les 2 propriétés :

Qt.CommandText
Qt.Connection


Salutations!


"Pierre-Yves" a écrit dans le message de news:
Bonjour,

J'effectue actuellement des requêtes sous excel à partir d'une base Access
je souhaite modifier le chemin d'accès à la base Access Hbtabord.mdb.
Pour ce faire je lance la macro suivante qui change la connection.
Elle s'effectue normalement. Par contre, lorsque j'actualise les données. Il
me met C:hbTabord.mdb introuvable.
Quelequ'un aurait-il une solution?

merci

Sub Query_Et_NomFichierModifie()

Dim OldName As String, NewName As String
Dim Sh As Worksheet, Qt As QueryTable
Dim CH As String

' À saisir manuellement si nécessaire...
OldName = "C:hbTaBord.mdb"
NewName = "H:hbTaBord.mdb"

For Each Sh In Worksheets
For Each Qt In Sh.QueryTables
CH = Qt.Connection
Qt.Connection = Replace(Qt.Connection, OldName, NewName, , ,
vbTextCompare)
Qt.Refresh True
Next
Next
'Sauvegarde du fichier
ThisWorkbook.Save
Set Sh = Nothing: Set Qt = Nothing

End Sub
Avatar
michdenis
à titre d'information supplémentaire :


Une chaîne de connexion ressemble à ceci :
ODBC;DSN=MS Access Database;DBQ=c:Mes documentsComptoir.mdb;DefaultDir=C:Mes
documents;DriverId(1;Exclusive=1;FIL=MS Access;MaxBufferSize 48;PageTimeout=5;ReadOnly=0;UID­min;


Une Chaîne de "CommandText" ressemble à ceci :

SELECT Fournisseurs.Société, Fournisseurs.Adresse, Fournisseurs.Ville, Fournisseurs.Pays
FROM `C:ODBCbernard 2Comptoir`.Fournisseurs Fournisseurs


Salutations!




"michdenis" a écrit dans le message de news:
Bonjour Pierre-Yves,

Le nom du fichier source apparaît à 2 endroits stratégiques dans une connection de type obdc :

A ) Dans la Propriété de "commandText" qui est la chaîne de caractères écrites en SQL qui définit la requête
B ) Dans la propriété "Connection" qui représente la chaîne de caractère définissant la liaison entre les 2 fichiers

Si tu as modifié le nom de ton fichier source, tu devras modifier les 2 chaînes de caractères ci-haut mentionnées.

Dans ta procédure, tu devras tenir compte de ceci :
La chaîne de connection, on utilise le nom du fichier et son EXTENSION
comme ceci : DBQ=c:Mes documentsComptoir.mdb, l'extension du fichier dans la chaîne "CommandText" n'est pas inscrite
dans la chaîne de texte :" FROM `c:Mes documentsComptoir`.Fournisseurs "

Sans avoir testé, tu devrais définir tes variables sans les extensions des fichiers

OldName = "C:hbTaBord"
NewName = "H:hbTaBord"

Et faire le remplacement dans les 2 propriétés :

Qt.CommandText
Qt.Connection


Salutations!


"Pierre-Yves" a écrit dans le message de news:
Bonjour,

J'effectue actuellement des requêtes sous excel à partir d'une base Access
je souhaite modifier le chemin d'accès à la base Access Hbtabord.mdb.
Pour ce faire je lance la macro suivante qui change la connection.
Elle s'effectue normalement. Par contre, lorsque j'actualise les données. Il
me met C:hbTabord.mdb introuvable.
Quelequ'un aurait-il une solution?

merci

Sub Query_Et_NomFichierModifie()

Dim OldName As String, NewName As String
Dim Sh As Worksheet, Qt As QueryTable
Dim CH As String

' À saisir manuellement si nécessaire...
OldName = "C:hbTaBord.mdb"
NewName = "H:hbTaBord.mdb"

For Each Sh In Worksheets
For Each Qt In Sh.QueryTables
CH = Qt.Connection
Qt.Connection = Replace(Qt.Connection, OldName, NewName, , ,
vbTextCompare)
Qt.Refresh True
Next
Next
'Sauvegarde du fichier
ThisWorkbook.Save
Set Sh = Nothing: Set Qt = Nothing

End Sub