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

Modification par programmation des infos de connexion MS Query

2 réponses
Avatar
news.vtx.ch
Bonjour,

Je planifie la migration d'un serveur de base de données, sur lequel les
utilisateurs exécutent des requêtes au travers de Excel / MS Query.

J'ai pu constater que les infos de connexion ODBC (ip serveur, user, mot de
passe) étaient recopiées dans le fichier Excel. En cas de migration vers un
nouveau serveur, avec un nouveau numéro IP, les choses se compliquent pour
l'utilisateur, et j'aimerais si possible éviter qu'ils se rendent compte de
quoi que ce soit.

Existe-t-il un outil, un exemple de code, permettant de modifier par
programmation les infos de connexion MS Query dans une fiche Excel? J'ai
tenté avec un editeur HEX, et ça fonctionne partiellement: le nombre de
caractères doit rester identique, sinon le fichier Excel devient corrompu.

Merci pour votre aide!

Philippe

2 réponses

Avatar
JB
Bonjour,

Utiliser l'enregistrement automatique de macro puis adapter le code:

Sub Attache()
sqlChaine = "select * from client"
RepAppli = ActiveWorkbook.Path
ChaineConn = "ODBC;DSN=MS Access Database;DBQ=" & RepAppli &
"Access2000.mdb"
ActiveSheet.QueryTables.Add(Connection:=ChaineConn,
Destination:=Range("A1"), Sql:=sqlChaine).Refresh
End Sub

JB



On 19 fév, 17:19, "news.vtx.ch" wrote:
Bonjour,

Je planifie la migration d'un serveur de base de données, sur lequel les
utilisateurs exécutent des requêtes au travers de Excel / MS Query.

J'ai pu constater que les infos de connexion ODBC (ip serveur, user, mot d e
passe) étaient recopiées dans le fichier Excel. En cas de migration ve rs un
nouveau serveur, avec un nouveau numéro IP, les choses se compliquent po ur
l'utilisateur, et j'aimerais si possible éviter qu'ils se rendent compte de
quoi que ce soit.

Existe-t-il un outil, un exemple de code, permettant de modifier par
programmation les infos de connexion MS Query dans une fiche Excel? J'ai
tenté avec un editeur HEX, et ça fonctionne partiellement: le nombre d e
caractères doit rester identique, sinon le fichier Excel devient corromp u.

Merci pour votre aide!

Philippe


Avatar
MichDenis
L'objet QueryTable dans Excel à 2 propriétés importantes
pour la donne de votre problème "Connection" et "CommandText"

Connection retourne la chaîne de Connection à la base de donnée
CommandText représente la chaîne de la requête SQL utilisée par QueryTable.

Ces 2 chaînes de caractères sont enregistrés avec le fichier excel lors de
l'enregistrement du fichier.

Vous pouvez afficher ces chaînes dans une cellule d'une feuille de calcul

Dim QT As QueryTable
Set Qt = Worksheets("Feuil1).QueryTable(1)
With QT
Worksheets("Feuil1).Range("A1") = .Connection
Worksheets("Feuil1).Range("A2") =.CommandText
End With

Vous pouvez manipuler ces chaines de caractères, en modifier le contenu
et ainsi attribuer les nouvelles chaînes au QT pour le mettre à jour.

With QT
.Connection = Worksheets("Feuil1).Range("A1")
.CommandText = Worksheets("Feuil1).Range("A2")
.Refresh false
End With

Et avec un peu plus d'habileté, il est possible d'utiliser la
fonction "Replace" ou "Substitute" pour remplacer le texte
des 2 propriétés sans passer par l'intermédiaire de cellules de la feuille de calcul.



"news.vtx.ch" a écrit dans le message de news:
47bb0192$
Bonjour,

Je planifie la migration d'un serveur de base de données, sur lequel les
utilisateurs exécutent des requêtes au travers de Excel / MS Query.

J'ai pu constater que les infos de connexion ODBC (ip serveur, user, mot de
passe) étaient recopiées dans le fichier Excel. En cas de migration vers un
nouveau serveur, avec un nouveau numéro IP, les choses se compliquent pour
l'utilisateur, et j'aimerais si possible éviter qu'ils se rendent compte de
quoi que ce soit.

Existe-t-il un outil, un exemple de code, permettant de modifier par
programmation les infos de connexion MS Query dans une fiche Excel? J'ai
tenté avec un editeur HEX, et ça fonctionne partiellement: le nombre de
caractères doit rester identique, sinon le fichier Excel devient corrompu.

Merci pour votre aide!

Philippe