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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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...
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...