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 :

Requête SQL depuis une macro


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 46
    Points : 38
    Points
    38
    Par défaut Requête SQL depuis une macro
    Bonjour à tous,

    J'ai un fichier qui doit générer plusieurs autres fichiers en récoltant les données d'une base Oracle. J'ai exécuté la requête dans MsQuery pour m'assurer qu'elle marche et j'ai utilisé un code généré automatiquement par l'enregistreur de macro, voici le 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
    26
    27
    28
     
    'ouvrir le fichier destination
    Set DONNEES_DE_BASE = Application.Workbooks.Open(ThisWorkbook.Path & Parameters.Sheets("Chemin_Templates").Range("B1"))
     
    'Lancer une requête SQL pour peupler une feuille
     With DONNEES_DE_BASE.Sheets("INC actif").QueryTables.Add(Connection:= _
            "ODBC;DSN=SCPROD;UID=SC_LECT;PWD=FFFFF;DBQ=SCBD;DBA=W;APA=T;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;FRL=F;MTS=F;CSR=F;PFC=10;TLO=0;", Destination:=DONNEES_DE_BASE.Sheets("INC actif").Range("A2"))
            .CommandText = "SELECT PROBSUMMARYM1.NUMBERPRGN, PROBSUMMARYM1.OPEN_TIME, PROBSUMMARYM1.UPDATE_TIME, PROBSUMMARYM1.STATUS, PROBSUMMARYM1.CLOSE_TIME, PROBSUMMARYM1.CLOSED_BY, PROBSUMMARYM1.CATEGORY, PROBSUMMARYM1.PROB" & _
            "LEM_TYPE, PROBSUMMARYM1.REFERENCE_NO, PROBSUMMARYM1.COMPANY, PROBSUMMARYM1.CORP_STRUCTURE, PROBSUMMARYM1.CONTACT_NAME, PROBSUMMARYM1.BRIEF_DESCRIPTION, PROBSUMMARYM1.RESOLUTION, PROBSUMMARYM1.RESOLVED" & _
            "TIME, PROBSUMMARYM1.SEVERITY_CODE, PROBSUMMARYM1.ASSIGNEE_NAME, PROBSUMMARYM1.ASSIGNMENT, PROBSUMMARYM1.PRODUCT_TYPE, PROBSUMMARYM1.SUBCATEGORY, PROBSUMMARYM1.SITE_CATEGORY, PROBSUMMARYM1.INCIDENT_ID" & _
            "PROBSUMMARYM1.SAGIR_REF_EXTERNE, PROBSUMMARYM1.SAGIR_CHANGE_NO, PROBSUMMARYM1.REOPENED_BY, PROBSUMMARYM1.OTI_TOSC_CONSUMER_REFERENCE, PROBSUMMARYM1.LAST_ACTIVITY, PROBSUMMARYM1.REOPEN_TIME, PROBSUMM" & _
            "ARYM1.RESOLVED_GROUP, PROBSUMMARYM1.RESOLVED_BY, PROBSUMMARYM1.PRIORITY_CODE, PROBSUMMARYM1.USER_PRIORITY, PROBSUMMARYM1.OPENED_BY, PROBSUMMARYM1.USER_TYPE, PROBSUMMARYM1.ACTION SC_SUM.PROBSUMMARYM1" & _
            "PROBSUMMARYM1 WHERE (PROBSUMMARYM1.STATUS='open') OR (PROBSUMMARYM1.STATUS='resolved') OR (PROBSUMMARYM1.STATUS='updated')"
            .Name = "INC_Actifs"
            .FieldNames = False
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = True
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .Refresh BackgroundQuery = False
        End With
    Lors du lancement de la requête ça bogue sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Refresh BackgroundQuery = False
    en générant le message suivant:

    Erreur définie par l'application ou par l'objet

    Je crois que le fait que je roule une requête à partir d'un fichier dans un autre fichier fait qu'à un certain moment un lien devienne manquant, mais je ne sais trop lequel. Quelqu'un a des idées?

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

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Points : 2 056
    Points
    2 056
    Par défaut
    Bonjour et bonjour à tout le forum

    Il semblerait que l'enregistreur n'ai pas tout pris il faut dire que le sql est long
    il manque une virgule et un espace à la fin de INCIDENT_ID" &
    manque quelque chose dans PROBSUMMARYM1.ACTION SC_SUM.PROBSUMMARYM1ou SC_SUM. peut être pris comme une table

    et surtout il n'y a pas de FROM pour indiquer quelle table est à attaquer

    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
    Set DONNEES_DE_BASE = Application.Workbooks.Open(ThisWorkbook.Path & Parameters.Sheets("Chemin_Templates").Range("B1"))
     
    'Lancer une requête SQL pour peupler une feuille
     With DONNEES_DE_BASE.Sheets("INC actif").QueryTables.Add(Connection:= _
            "ODBC;DSN=SCPROD;UID=SC_LECT;PWD=FFFFF;DBQ=SCBD;DBA=W;APA=T;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;FRL=F;MTS=F;CSR=F;PFC=10;TLO=0;", Destination:=DONNEES_DE_BASE.Sheets("INC actif").Range("A2"))
            .CommandText = "SELECT PROBSUMMARYM1.NUMBERPRGN, PROBSUMMARYM1.OPEN_TIME, PROBSUMMARYM1.UPDATE_TIME, PROBSUMMARYM1.STATUS, PROBSUMMARYM1.CLOSE_TIME, PROBSUMMARYM1.CLOSED_BY, PROBSUMMARYM1.CATEGORY, PROBSUMMARYM1.PROB" & _
            "LEM_TYPE, PROBSUMMARYM1.REFERENCE_NO, PROBSUMMARYM1.COMPANY, PROBSUMMARYM1.CORP_STRUCTURE, PROBSUMMARYM1.CONTACT_NAME, PROBSUMMARYM1.BRIEF_DESCRIPTION, PROBSUMMARYM1.RESOLUTION, PROBSUMMARYM1.RESOLVED" & _
            "TIME, PROBSUMMARYM1.SEVERITY_CODE, PROBSUMMARYM1.ASSIGNEE_NAME, PROBSUMMARYM1.ASSIGNMENT, PROBSUMMARYM1.PRODUCT_TYPE, PROBSUMMARYM1.SUBCATEGORY, PROBSUMMARYM1.SITE_CATEGORY, PROBSUMMARYM1.INCIDENT_ID" & _
            "PROBSUMMARYM1.SAGIR_REF_EXTERNE, PROBSUMMARYM1.SAGIR_CHANGE_NO, PROBSUMMARYM1.REOPENED_BY, PROBSUMMARYM1.OTI_TOSC_CONSUMER_REFERENCE, PROBSUMMARYM1.LAST_ACTIVITY, PROBSUMMARYM1.REOPEN_TIME, PROBSUMM" & _
            "ARYM1.RESOLVED_GROUP, PROBSUMMARYM1.RESOLVED_BY, PROBSUMMARYM1.PRIORITY_CODE, PROBSUMMARYM1.USER_PRIORITY, PROBSUMMARYM1.OPENED_BY, PROBSUMMARYM1.USER_TYPE, PROBSUMMARYM1.ACTION SC_SUM.PROBSUMMARYM1" & _
            "PROBSUMMARYM1 WHERE (PROBSUMMARYM1.STATUS='open') OR (PROBSUMMARYM1.STATUS='resolved') OR (PROBSUMMARYM1.STATUS='updated')"
            .Name = "INC_Actifs"
            .FieldNames = False
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = True
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .Refresh BackgroundQuery = False
        End With
    je pense que tout cela n'aide pas
    essais de refaire ta macro avec un minimum de champs
    Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
    ---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 46
    Points : 38
    Points
    38
    Par défaut
    Non, non, ça aide
    Et comment ça aide!

    C'est le SQL qui était faux, comme quoi on n'est jamais trop rigoureux.

    Merci infiniment, ça me relance de si bon matin pour la semaine qui commence par des solutions et non par des problèmes

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

Discussions similaires

  1. Envoyer une requête SQL depuis un VBS
    Par YLKweb dans le forum VBScript
    Réponses: 6
    Dernier message: 11/07/2014, 17h11
  2. Lire une requête SQL depuis un fichier texte
    Par Chris L' Arabis dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 30/05/2014, 19h06
  3. Requête SQL dans une macros Excel
    Par Lebijuu dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/05/2014, 13h58
  4. [Excel 2003-2007] requêtes SQL vers une base access depuis Excel
    Par .Spirit dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/10/2010, 17h03
  5. Générer une requête SQL depuis un model physique
    Par Ryan Sheckler dans le forum Requêtes
    Réponses: 4
    Dernier message: 01/12/2005, 12h11

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