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 :

lien SQL externe entre 2 bases de données différentes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut lien SQL externe entre 2 bases de données différentes
    _
    Comment faire un lien SQL externe entre 2 bases de données XL différentes avec ADO en VBA

    Bonjour à tous,

    Il est possible de faire un lien externe (c'est à dire une requête SQL) depuis plusieurs bases de données différentes.
    Mais comment ?

    Faire pointer la connection ADO vers un plusieurs fichier Excel ?
    Créer un recordset avec 2 connections ?

    J'ai trouvé des éléments de réponse ici, mais je ne sais pas comment initialiser les liens en amont de la requête SQL.

    Merci pour vos lumières

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    ça ce passe dans Access mais c'est le même principe: https://mon-partage.fr/f/LoCWKVjq/

    en fonction de l'exemple du lien que tu as donné et don je suis l'auteur, je fais une connexion sur le fichier de la macro ThisWorkbook et je fais deux lien externe vers deux Xls différent! donc en l'espèce on fait un lien entre 3 fichier xls! (ThisWorkbook,c:\temp\Xls1.xlsx,c:\temp\Xls2.xlsx) => (FichierMaitre,FichierExclave1,FichierExclave2)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()Dim FichierMaitre As String, FichierExclave1 As String, FichierExclave21 As String
    FichierMaitre = ThisWorkbook.FullName: FichierExclave1 = "c:\temp\Xls1.xlsx": FichierExclave2 = "c:\temp\Xls2.xlsx"
    With CreateObject("AdoDb.connection")
        .Open = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FichierMaitre & ";Extended Properties=""Excel 12.0;HDR=No;"""
            texte_SQL = texte_SQL & "SELECT DISTINCT  [DESTINAT], [MONTANT], [NBRCOLIS] FROM [" & NomFeuille & "$] in '" & FichierExclave1 & "' 'excel 12.0;HDR=Yes;IMEX=1;'"
            texte_SQL = texte_SQL & "Union "
            texte_SQL = texte_SQL & "(SELECT DISTINCT  [DESTINAT], [MONTANT], [NBRCOLIS] FROM [" & NomFeuille & "$] in '" & FichierExclave2 & "' 'excel 12.0;HDR=Yes;IMEX=1;') "
        Set rs = .Execute(texte_SQL)
        .Close
    End With
    Dernière modification par Invité ; 03/07/2017 à 12h16.

  3. #3
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut
    Je n'avait pas saisi la distinction entre connexion et lien externe.

    Merci beaucoup, je vais essayer tout ça.

  4. #4
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut
    J'ai essayé et ça marche.

    Hormis un petit oubli que je corrige si quelqu'un d'autre souhaite utiliser ton exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte_SQL = texte_SQL & " ( SELECT DISTINCT  [DESTINAT], [MONTANT], [NBRCOLIS] FROM [Sheet1$] in '" & FichierEsclave2 & "' 'excel 12.0;HDR=Yes;IMEX=1;') "
    Il est important de savoir fermer une parenthèse encore faut-il l'avoir ouverte au préalable, surtout après une clause UNION .

    Merci encore,

    Francis

  5. #5
    Invité
    Invité(e)
    Par défaut
    oui effectivement j'avais réédité le poste un peut après mais c’était trop tard. le principal étant que tu t'y retrouve au final!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Choix entre une base de données Sql server et Sql server compact
    Par hugnka dans le forum VB.NET
    Réponses: 2
    Dernier message: 28/05/2012, 22h45
  2. Réponses: 7
    Dernier message: 02/03/2011, 14h38
  3. liens entre deux bases de données
    Par speedy_g dans le forum Débuter
    Réponses: 2
    Dernier message: 30/03/2009, 16h05
  4. [MySQL] lien entre deux bases de données
    Par joshyeha dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/09/2006, 13h12
  5. Faire un lien entre deux bases de données
    Par pierce dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/01/2006, 21h29

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