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 :

executer un script SQL à partir de Excel [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 21
    Points : 17
    Points
    17
    Par défaut executer un script SQL à partir de Excel
    Bonjour ,

    Je travaille sur Excel 2007, je dois executer une requête à partir d'un boulon sur Excel qui utilise une macro.
    j'ai fait un code et il marche hyper bien.

    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
    Sub Teste_Emprunt()
       ' Declare the QueryTable object
    Dim qt As QueryTable
     
    ' Set up the SQL Statement
    sqlstring1 = "select distinct(EE.IdEmprunt),CC.idClient, CC.LbNom,  EE.CdRefClient,  BB.LbNomCourt as Banque, EE.DtRealisation, EE.DtFinDette from _Ref_EtatEmprunt RE, Emprunt EE join Client CC on EE.idClient = CC.idClient join Banque BB on EE.idBanque = BB.idBanque join EcheanceAmortissement EA on EE.IdEmprunt = EA.IdEmprunt where  CC.IdTypeCompte=0 and EA.FlCRD<0 and RE.IdEtatEmprunt in (1) ORDER BY CC.IdClient ASC "
     
    sqlstring2 = "select * from Client"
     
    ' Set up the connection string, reference an ODBC connection
    ' There are several ways to do this
    ' Leave the name and password blank for NT authentication
    connstring1 = _
     "ODBC;DSN=pubs;UID=;PWD=;Database="
     
    ' Now implement the connection, run the query, and add
    ' the results to the spreadsheet starting at row A1
    With Sheets("Data1").QueryTables.Add(Connection:=connstring1, Destination:=Range("Data1!A3"), Sql:=sqlstring1)
     .Refresh
    End With
     
    End Sub
    le problème c'est que au lieu d'écrire la requête dans le code "sqlstring2 = "select * from Client"", je veux faire "sqlstring2 = "c:\script.sql""
    ==> je veux exécuter le script que j'ai dans un fichier .sql.

    je ne sais pas comment faire.

    Aidez moi SVP

    Merci d'avance

  2. #2
    Membre du Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    J'ai trouvé ce code qui devrait faire l'affaire
    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
    Sub lireFichierTexte()
    Dim infosLigne As String
    Dim i As Integer, x As Integer
    Dim Tableau() As String
     
    Open "C:\test.txt" For Input As #1
    Do While Not EOF(1)
    Line Input #1, infosLigne
    i = i + 1
    Tableau = Split(infosLigne, ";") 'le separateur est le point virgule
    For x = 0 To UBound(Tableau)
    Cells(i, x + 1) = Tableau(x)
    Next
    Loop
    Close #1
    End Sub
    S'il n'y a qu'une seule ligne sans besoin de séparation on peut le simplifier

    Il faut aussi :
    - adapter le nom du fichier
    - remplir une variable (sqlstring2) au lieu de cellules

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Merci pour le code.

    Je l'ai essayé mais j'arrive pas à faire l'appel de "lireFichierTexte" dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Sheets("Data1").QueryTables.Add(Connection:=connstring1, Destination:=Range("Data1!A3"), Sql:=??)
     .Refresh
    End With
    je ne sais pas comment je peux appeler le sub lireFichierTexte ??

  4. #4
    Membre du Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    Points : 58
    Points
    58
    Par défaut
    Dans l'exemple la routine lirefichiertexte() renseigne la variable tableau.
    Il faut que tu utilises la valeur de cette variable pour ta chaine de requête.

    Tu peux
    - déclarer cette variable en tête de module (si les deux routines sont dans le même module)
    Elle sera alors commune aux deux routines .
    Dans la première du tu fais call lireFichierTexte()
    ensuite SQL:=Tableau


    - passer cette variable d'une routine à l'autre
    dans la première routine
    déclaration variable tableau
    call lireFichierTexte(Tableau)
    ensuite SQL:=Tableau

    dans ce cas lireFichiertexte() devient lirefichiertexte(Tableau as string)

    Je tapes tout ça de mémoire donc détails à vérifier
    Lis la documentation sur le passage des variables.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    En fait la fonction marche bien sauf que au lieu d'exécuter la requête écrite dans le fichier .SQL, elle lit et copie les lignes de la requête dans les cellules d'Excel.

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

Discussions similaires

  1. Execution Script SQL à partir d'une interface asp
    Par Mils34 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 27/03/2011, 18h31
  2. Executer un script sql à partir d'un script shell
    Par bfard dans le forum Sql*Plus
    Réponses: 4
    Dernier message: 13/04/2010, 13h15
  3. executer un script SQL oracle à partir cmd.exe
    Par blaise4714 dans le forum Oracle
    Réponses: 2
    Dernier message: 29/04/2009, 11h13
  4. Comment executer un script SQL a partir de la ligne de commande ?
    Par lassaad83 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/08/2007, 11h13
  5. [DEBUTANT]Comment executer un script sql
    Par peaceinpal dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 15/03/2004, 08h44

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