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 :

Erreur de syntaxe : connection odbc


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 257
    Par défaut Erreur de syntaxe : connection odbc
    Bonjour a tous et a toutes,

    grace a un bouton sur une feuille, j'execute une macro qui me recupere les donnees d'une base de donnee et les affiche dans ma feuille Excel. La macro fonctionne parfaitement bien. Mon probleme est simplement au niveau de la syntaxe quand je souhaite faire afficher les donnees recuperer sur une autre feuille excel.

    Voici mon code :
    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
    With ActiveSheet.QueryTables.Add(Connection:= _
            "ODBC;DSN=khalix_odbcBI_TST2;UID=z70914;;DBQ=C:\Program Files\Khalix\KlxTst2\cache\;CODEPAGE=1252;" _
            , Destination:=ActiveCell)
            .CommandText = Array( _
            "SELECT USERS.USER_NAME, USERS.USER_DESC, USER_ACCESS.ACCESS_SYM, USER_ACCESS.ACCESS_TYPE, USER_GROUP.GROUP_NAME, USERS.USER_SPEC" & Chr(13) & "" & Chr(10) & "FROM USER_ACCESS USER_ACCESS, USER_GROUP USER_GROUP, USERS USERS" & Chr(13) & "" & Chr(10) & "WHER" _
            , _
            "E USER_ACCESS.USER_NAME = USER_GROUP.USER_NAME AND USER_GROUP.USER_NAME = USERS.USER_NAME AND ((USERS.USER_SPEC='#all'))" _
            )
            .Name = "khalix_odbcBI_TST2 (not sharable)_1"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .SourceConnectionFile = _
            "C:\Program Files\Common Files\ODBC\Data Sources\khalix_odbcBI_TST2 (not sharable).DSN"
            .Refresh BackgroundQuery:=False
        End With
    L'erreur se produit ici lorsque je change activesheet par mon autre feuille(voir en gras):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With ActiveSheet.QueryTables.Add(Connection:= _
            "ODBC;DSN=khalix_odbcBI_TST2;UID=z70914;;DBQ=C:\Program Files\Khalix\KlxTst2\cache\;CODEPAGE=1252;" _
            , Destination:=ActiveCell)
    Je desire pouvoir simplement faire afficher les donnes sur une feuille appeler sheet12 au lieu de la feuille actuelle.

    Merci de bien vouloir me dire ou est mon erreur.

    Merci d'avance !

  2. #2
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 257
    Par défaut
    Bonjour,

    en essayant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With WorkSheets(12).QueryTables.Add(Connection:= _
            "ODBC;DSN=khalix_odbcBI_TST2;UID=z70914;;DBQ=C:\Program Files\Khalix\KlxTst2\cache\;CODEPAGE=1252;" _
            , Destination:=WorkSheets(12).Cells(1,1))...
    je n'ai plus d'erreur mais je n'ai plus de donnée aussi

    Pourquoi le changeemnt de feuille me cause un tel ennui. Merci de me dire ce que je ne fais pas correctement.

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 257
    Par défaut
    Bon ben finalement, j'ai tout essayé et rien a faire selon mes connaissances pour afficher les données récupérer directement dans une autre feuille sans que celle-ci soit ouverte. Alors, voici l'alternative que j'ai trouve.
    Tout simplement appele la feuille 12 (l'active quoi) et executer la macro tel quelle avec le activesheet au lieu de sheet(12) et ca marches. J'aurai aimé ne jamais a ouvrir la feuille 12, mais bon, elle apparait et disparait apres la recupération des données.

    Merci a tous.

  4. #4
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    Bonjour,

    Avec Query la destination est toujours ds la feuille active quoique tu puisse faire.

    Tu es donc obligé de selectionner ta feuille avant tel que tu as fait en final.

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

Discussions similaires

  1. Erreur lors d'une Connection ODBC avec vb
    Par sebac dans le forum VBA Access
    Réponses: 3
    Dernier message: 07/07/2009, 18h34
  2. Erreur de connection ODBC vers Informix
    Par chris81 dans le forum Informix
    Réponses: 1
    Dernier message: 15/02/2008, 17h04
  3. Erreur du connection ODBC
    Par Delphi-ne dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/12/2007, 14h04
  4. [wxWindows] Erreur de link pour ODBC
    Par ovh dans le forum wxWidgets
    Réponses: 3
    Dernier message: 28/01/2004, 15h38
  5. [VB6] Connection ODBC Oracle
    Par babe dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/10/2002, 16h52

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