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 Excel > Access en masse par VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Août 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Août 2019
    Messages : 2
    Par défaut Mise à jour connexion Excel > Access en masse par VBA
    Bonjour,

    Je viens vers ou afin de tenter de trouver une solution a mon problème.
    Je suis dans une équipe de production qui utilise une bonne vingtaine fichiers Excel qui sont alimentés par des requêtes Access.
    La connexion a été faite via "Microsoft Query", chacun des fichiers Excel pointe vers une base Access différente.

    La chaine de connexion est donc de type :
    DSN=MS Access Database;DBQ=Q:\MonCheminJusqueMaBase.mdb;DefaultDir=Q:\MonCheminJusqueMaBase;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;

    Notre IT souhaite nous faire migrer l'ensemble de nos repertoire. Il me faut donc modifier toutes les chaines de connexion de tous les fichiers Excel... Ca marche très bien manuellement, je le fais de temps en temps pour des changements de nom par exemple mais la sur la volumétrie ca va etre tres fastidueux.

    J'ai pas de connaissance très poussé en VBA, j'ai fouillé un peu sur le net et ai reussit à adpater quelque chose qui marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub update()
     
    With ActiveWorkbook.Connections("Lancer la requête à partir de MS Access Database").ODBCConnection
    .Connection = "ODBC;DSN=MS Access Database;DBQ=Q:\MonCheminJusqueMaBase.mdb;DefaultDir=Q:\pMonCheminJusqueMaBase;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"
     
    End With
    Malheureusement vu que j'indique en dur UNE connection cela me modifie bien celle ci mais pas les dizaines d'autres présente dans le fichier Excel qui sont souvent du type "Lancer la requête à partir de MS Access DatabaseX" avec X qui est numéro différent d'un fichier à l'autre bien sur..
    Il y a t-il moyen de modifier ce champs texte afin qu'une boucle passe sur l'ensemble des connections ?

    J'ai essayé plusieurs code trouver ci-et la avec des boucles qui passe sur des QueryTable notamment mais sans résultat..

    Merci d'avance pour votre aide !

    Cdt
    Titi

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    J'essaierai un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim c a as object
     
    for each c in ActiveWorkbook.Connections
        c.ODBCConnection.Connection = "ODBC;DSN=MS Access Database;DBQ=Q:\MonCheminJusqueMaBase.mdb;DefaultDir=Q:\pMonCheminJusqueMaBase;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"
    next c
    Idéalement il faudrait trouver type exact de c mais avec un Object ça devrait passer.

    Tu peux aussi voir ce que donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim i as long
     
    for i=1 to ActiveWorkbook.Connections.count
        ActiveWorkbook.Connections(1).ODBCConnection.Connection = "ODBC;DSN=MS Access Database;DBQ=Q:\MonCheminJusqueMaBase.mdb;DefaultDir=Q:\pMonCheminJusqueMaBase;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"
    next i
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Août 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Août 2019
    Messages : 2
    Par défaut
    Bonjour marot_r

    le 1er code marche parfaitement !
    J'avais justement testé avec ce qu'il me sembleait etre l'objet exact "querytable" mais ca ne marchait pas ! La c'est nickel !
    Merci bcp.

    Titi

Discussions similaires

  1. [AC-2010] Mise à jour base de données Access depuis Excel
    Par NewUserAccess dans le forum Access
    Réponses: 3
    Dernier message: 26/02/2015, 13h58
  2. Mise à jours base de donnée Access depuis liste Excel
    Par Stepsbysteps dans le forum Excel
    Réponses: 4
    Dernier message: 07/10/2013, 14h25
  3. mise à jour avec un DataGridView (access)
    Par benneb dans le forum Accès aux données
    Réponses: 8
    Dernier message: 28/08/2008, 12h46
  4. Mise à jour de la base Access a partir des fichiers Ascii
    Par mehdichess74 dans le forum Access
    Réponses: 3
    Dernier message: 21/06/2006, 18h00
  5. message d'erreur lors de mise à jour d'une BD access
    Par Abydos Business Group dans le forum Access
    Réponses: 2
    Dernier message: 25/01/2006, 16h36

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