IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Mise à jour connexion MSQuery par macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de LG-69
    Homme Profil pro
    Analyste statisticien
    Inscrit en
    Juillet 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste statisticien

    Informations forums :
    Inscription : Juillet 2014
    Messages : 162
    Points : 189
    Points
    189
    Par défaut Mise à jour connexion MSQuery par macro
    Bonjour,

    Ayant posé la question dans le forum "classique" d'excel et n'ayant pas eu de réponse, il semble qu'il n'y ait pas de solution pour mettre à jour manuellement ou directement par les menus excel les connexion MSQuery. Je me lance donc dans une macro pour le faire.

    Ma problématique :
    - J'ai un fichier excel versionné (nomfichier_v1) pour lequel j'ai créé une connexion MSQuery sur lui même afin de pouvoir avoir un tableau croisé dynamique complexe prenant ses données sur plusieurs onglets => ça marche.
    - Mon fichier subit régulièrement des montées de version (nomfichier_v2, nomfichier_v3,...) mais la connexion MSQuery reste toujours sur la première version de mon fichier. Il me faut donc mettre à jour la connexion.
    - Je n'ai pas trouvé (enfin il ne semble que ce ne soit pas possible) comment mettre à jour cette connexion manuellement (sans devoir tout reconstruire mon Tcd)

    Solution :
    - J'ai trouvé un lien intéressant pour le faire par macro :
    https://support.microsoft.com/en-us/kb/816562

    Avant de lancer une macro aux résultats non maîtrisés et plus ou moins définifs j'ai modifié la macro afin de juste afficher dans une Msgbox la connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub QueryChange()
         Dim sh As Worksheet, qy As QueryTable
         Dim pt As PivotTable, pc As PivotCache
         Dim OldPath As String, NewPath As String
         Dim rng As Range
     
         For Each ws In ActiveWorkbook.Sheets
           For Each qy In ws.QueryTables
                MsgBox (qy.Connection)
                MsgBox (qy.CommandText)
           Next qy
         Next ws
    End Sub
    Or rien ne se passe. Je suis alors passé en mode pas à pas et là je constate que ma macro boucle bien sur mes feuilles actives mais n'entre jamais dans la boucle des QueryTables, comme s'il n'y en avait pas.

    Quand je fais Menu "connexion", j'ai ma requête : "Requête_v0.6"
    Quand je fais "propriétés, j'ai bien les liens de connexion et de requête
    - chaîne de connexion : "DSN=Excel Files;DBQ=T:\CND\IND\RNGD\Pilotage\Plan de charge\RNGD Suivi pilotageJFS_v0.10.xlsm;DefaultDir=T:\CND\IND\RNGD\Pilotage\Plan de charge;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;"
    - texte de commande : "SELECT * FROM Tb_Phase1 Tb_Phase1 union SELECT * FROM Tb_Conges Tb_Conges"

    C'est ce qui est en gras que j'ai besoin de changer (et accessoirement la requête SQL)

    D'avance merci pour toute aide sur ce sujet.

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut


    Bonjour,

    si pas d'entrée dans la boucle, aucun objet QueryTable dans la feuille !

    Et c'est pourtant simple à vérifier en insérant avant la boucle :

    MsgBox "Feuille " & Ws.Name & " : " & Ws.QueryTables.Count

    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  3. #3
    Membre habitué Avatar de LG-69
    Homme Profil pro
    Analyste statisticien
    Inscrit en
    Juillet 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste statisticien

    Informations forums :
    Inscription : Juillet 2014
    Messages : 162
    Points : 189
    Points
    189
    Par défaut
    Merci pour cette réponse, je ne suis pas un grand expert en VBA et n'aie donc pas pensé à utiliser la fonction count.
    C'est fait et comme on pouvait s'y attendre le résultat est 0 pour chacune des feuilles. Mais alors où est planquée ma connexion MSQuery ?

    Quand je suis sur mon onglet Tcd qui utilise les données de la requête, j'utilise le menu "Données" puis "connexion" et je retrouve bien ma requête

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut




    Confusion des collections QueryTables et Connections ou autre …

    Rien qu'en activant le Générateur de macro puis en modifiant la connexion MSQuery (qui n'est donc pas une QueryTable !) …



    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  5. #5
    Membre habitué Avatar de LG-69
    Homme Profil pro
    Analyste statisticien
    Inscrit en
    Juillet 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste statisticien

    Informations forums :
    Inscription : Juillet 2014
    Messages : 162
    Points : 189
    Points
    189
    Par défaut
    Merci pour la réponse :

    Citation Envoyé par Marc-L Voir le message

    Confusion des collections QueryTables et Connections ou autre …
    Ca ne m'aide pas beaucoup pour avancer.
    J'ai donc tenté comme conseillé :
    - de modifier manuellement le fichier cible de la connexion MSQuery => j'y arrive uniquement si l'ancien fichier (=ancienne version du fichier) n'existe plus ou n'est plus accessible
    - de modifier la requête => impossible sans ré-initialiser totalement le TcD qui s'appuie dessus (donc aucun intérêt s'il faut tout refaire)

    Devant la difficulté, le peu de "littérature" trouvée sur ce sujet et visiblement le peu de personnes utilisant ce type de solution j'ai revu totalement la conception et abandonné les MSQuery (connexion ou collection je n'en sait rien).

    J'ai maintenant :
    - paramétré mes onglets à consolider (dans un tableau excel)
    - fait une macro qui balaye tous les onglets paramétrés et copie/colle les données dans un onglet consolidé
    - créé mon Tcd sur ce nouvel onglet

    En cas d'ajout d'un nouvel onglet je n'ai qu'à l'ajouter au paramétrage et ça roule.
    Dommage ces MSQuery me paraissaient bien puissantes mais trop compliquées à mettre en oeuvre (et encore plus à mettre à jour)

Discussions similaires

  1. [WD-2010] Mise à jour de signet par macro VBA
    Par totoro the big one dans le forum VBA Word
    Réponses: 1
    Dernier message: 15/03/2015, 21h14
  2. Mise à jour des données par macros.
    Par chpierro62 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 12/01/2012, 13h52
  3. [VBA][EXCEL] Mise à jour de TCD en macro
    Par Scuriolus dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 07/12/2005, 13h30
  4. Réponses: 2
    Dernier message: 05/12/2005, 16h39
  5. [MySQL] mise à jour de champs par passage de paramètre
    Par cams dans le forum PHP & Base de données
    Réponses: 31
    Dernier message: 02/12/2005, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo