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 :

SQL Excel: Erreur d'exécution '-2147217865(80040e37)'


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut SQL Excel: Erreur d'exécution '-2147217865(80040e37)'
    Bonjour à tous,

    j'essaie de me connecter à une base de données excel via vba avec les requetes sql; mais j'ai un message d'erreur qui s'affiche:


    Erreur d'exécution '-2147217865(80040e37)':
    Le moteur de base de données Microsoft Access n'a pas pu trouver l'objet Table. Vérifiez qu'il existe et que vous avez correctement entré son nom et son chemin d'accès. Si Table n'est pas un objet local, verifiez la connexion réseau, ou contactez l'administrateur du serveur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Option Explicit
    Public Const Fld_DB = "chemin"
    Public Const Name_DB= "NomFichier.xlsx"
    Public Const Fld_DBL = Fld_DB & Name_DB
    Public Const DB_Connect As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Fld_DBL
     
    Sub test()
        Dim tp As Variant
     
        tp = Xls_SqlLoader(DB_Connect)
     
    End Sub
     
    Public Function Xls_SqlLoader(ByVal strConnection As String) As Variant
     
        Dim rst As ADODB.Recordset
        Dim Cn As ADODB.Connection
        Dim Sql_Tx As String
     
      '--- Connection ---
        Set Cn = New ADODB.Connection
            With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = strConnection & ";Extended Properties=""Excel 12.0; HDR=YES"""
            .Open
        End With
     
        Sql_Tx = "SELECT NomTable1, NomTable2 from FUNDS WHERE  NomTable1= 'Bidule'  "
     
        Set rst = New ADODB.Recordset
     
        Set rst = Cn.Execute(Sql_Tx)
     
        Xls_SqlLoader = 0 
        Cn.Close
    End Function
    SVP j'ai besoin d'aide je ne comprends pas du tout pourquoi mon code ne marche pas.

    Merci d'avance.

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Commence par ce qui est le plus simple (si ce n'est pas déjà fait).

    Dans ton classeur Excel, donne le nom de Table à ta plage de données, comme tu le ferais pour ajouter n'importe quel autre nom dans Excel.

    P.S. À l'avenir, ce serait très apprécie que tu balises ton code. Tu le sélectionnes et tu cliques sur le dièse (#)
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour oui désolé pour le code;

    Mais j'ai déjà essayé ta solution

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 924
    Points
    55 924
    Billets dans le blog
    131
    Par défaut
    Salut.

    Il faut déjà vérifier le chemin et le nom de ton fichier, car avec l'exemple que tu donnes, ça ne saurait fonctionner.

    Il faudrait insérer un \ entre le chemin et le nom du fichier, sauf si FLD_DB se termine déjà par \...

    Si tu utilises le nom de la feuille comme nom de table, Excel exige que tu l'encadre avec des crochets et tu dois utiliser le signe $.

    Si ta feuille se nomme FUNDS, tu dois utiliser ... from [FUNDS$] WHERE ...

    Je me doute que les noms employés sont "bidon", mais NomTable1 comme nom de champ, c'est tout sauf limpide.

    J'ajouterai que Public Const Fld_DBL = Fld_DB & Name_DB, même si ça passe, ça me fait tiquer.

    Bref, si tu souhaites que l'on t'aide dans un truc aussi délicat que du SQL sur Excel, il faut donner le code EXACT que tu utilises, sans cela nous ne pourrons t'aider.

    N'hésite pas à te documenter en lisant ce tutoriel de SilkyRoad sur le sujet.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Comme la préciser Pierre, la table encadrée [], et avec $ à la fin!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sql_Tx = "SELECT NomTable1, NomTable2 from [FUNDS$] WHERE  NomTable1= 'Bidule'  "
     
        Set rst = New ADODB.Recordset
     
         rst.open Sql_Tx,cn

Discussions similaires

  1. access vers excel Erreur d'exécution '3027'.
    Par fllaurence dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/06/2008, 16h10
  2. transfert access -> excel : Erreur d'exécution 3011
    Par finesse20 dans le forum Access
    Réponses: 4
    Dernier message: 10/08/2006, 10h10
  3. Erreur d'exécution -2147217865 (80040e37)
    Par SylvainJ dans le forum Access
    Réponses: 2
    Dernier message: 26/07/2006, 11h50
  4. Réponses: 6
    Dernier message: 11/06/2006, 22h03
  5. [JVM][8.1.7] Erreur d'exécution de initjvm.sql
    Par Escuzze dans le forum Oracle
    Réponses: 4
    Dernier message: 01/07/2005, 15h39

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