OVH Cloud OVH Cloud

Modification d'une source MSQuery

1 réponse
Avatar
WhoIsPerfect?
Bonjour à tout le monde,

Voici mon p'tit problème (m'enfin que l'on m'a remonté).
sur une feuille Excel, j'ai un résultat d'une requête via MSQuery. J'aimerai
via du code VBA, modifier la source (qui est un fichier MDB). Au lieu de
faire la requête sur DB1.mdb, j'aimerai faire la requête sur le DB2.mdb.
Voici le bout de code qu'une personne a fait, mais qui ne fonctionne pas..
-------------------------------------------------------------------------
Sub test()
MsgBox Worksheets("Feuil1").QueryTables.Count
With Worksheets("Feuil1") 'Nom Feuille à redéfinir
.Range("c2") = Worksheets("Feuil1").QueryTables(1).Connection
.Range("d2") = Worksheets("Feuil1").QueryTables(1).CommandText
End With

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

OldName = "c:\bd1.mdb"
NewName = "c:\bd2.mdb"

For Each Sh In Worksheets
For Each Qt In Sh.QueryTables
If InStr(Qt.Connection, OldName) > 0 Then
Qt.Connection = Replace(Qt.Connection, OldName, NewName)
Qt.CommandText = Replace(Qt.CommandText, Left(OldName, Len(OldName) -
4), Left(NewName, Len(NewName) - 4))
Qt.Refresh True
Else
End If
Next
Next

With Worksheets("Feuil1") 'Nom Feuille à redéfinir
.Range("c3") = Worksheets("Feuil1").QueryTables(1).Connection
.Range("d3") = Worksheets("Feuil1").QueryTables(1).CommandText
End With

End Sub

1000000 Mercis à celles & ceux qui peuvent me donner le début d'une solution.

Olivier

1 réponse

Avatar
CAP2
Salut,

déjà, juste une petite chose (ce n'est sûrement qu'une erreur de frappe,
mais on peut y jeter un coup d'oeil...).
Tu parles de bases nommées DB1.mdb et DB2.mdb, or dans ton code il est fait
référence (à l'affectation des variables oldname et newname) à des bases
nommées bd1.mdb et bd2.mdb.
Donc si les noms utilisés dans le code ne correspondent pas aux noms réels
des bases, c'est normal que ça ne passe pas...

Tiens-nous au courant...

CAP2