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 :

Import de données SQL dans excel [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Par défaut Import de données SQL dans excel
    Bonjour,

    Je travailles sous Excel 2003 et je voudrais importer des données SQL à partir d une base de données sous SQL Server Express 2008.
    Je voudrais faire cela en utilisant une macro et utiliser une procédure stockée dans ma base pour importer les données.

    Voila si vous avez besoin de plus d'info n'hésitez pas .

    A bientôt !

  2. #2
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 155
    Par défaut
    Bonjour, moi j'utiliserai un lien ODBC pour faire la connection, puis un recordset pour lire la DB. Voici les étapes à suivre:

    1)Crée un lien ODBC vers ta DB (via control panel>DataSources) que tu nommes par exemple DB_Test
    2) Ajoute les 2 references dans le projet (Outils>References)
    - Microsoft ActiveX Data objects 2.x library
    - Microsoft ActiveX Data objects 2.x Recordset library
    3)Crée un module comme celui ci-dessous. La macro à exécuter est importVersXL
    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
    Option Explicit
    Private cnn As New ADODB.Connection
     
    Private Sub DBConnect()
        cnn.Open "DB_Test"
    End Sub
     
    Private Sub DBDisConnect()
        cnn.Close
        set cnn = Nothing
    End Sub
     
    Sub importVersXL()
    Dim cmd As New ADODB.Command
    Dim rs As New ADODB.Recordset
    Dim i As Long
     
    DBConnect
    cmd.ActiveConnection = cnn
    cmd.CommandType = adCmdText
    cmd.CommandText = tarequete ' du genre SELECT * FROM TABLE1 ORDER BY VAR 1"
     
    Set rs = cmd.Execute
    i = 0
    Do While Not rs.EOF
        Range("A" & i).Value = rs("VAR1") & ""
        i = i + 1
        rs.MoveNext
    Loop
    Set rs = Nothing
    Set cmd = Nothing
    DBDisConnect
    End Sub
    Bonne chance

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Par défaut
    Alors je reviens pour vous montrez comment j'ai procédé.

    J'ai créé un connectString :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connstring = "ODBC;DRIVER=SQL Server;SERVER=XXX;UID=XXX;PWD=XXX;APP=Microsoft Open DatabaseConnectivity;WSID=station08;DATABASE=XXX;Regional=Yes"
    J'ai créé une procedure stockée dans base de donnée. Pour l'utiliser je fais une requete SQL avec une concaténation pour le paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reqString = "EXEC MA_PROC_STOCKE " + @param
    Et pour remplir mes cellules :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With ActiveSheet.QueryTables.Add(Connection:=connstring, Destination:=Range("A6"))
        .CommandText = Array(reqString)
        .RefreshStyle = xlOverwriteCells
        .PreserveFormatting = True
        .AdjustColumnWidth = False
            .Refresh
    End With
    Voilà, après est ce que c'est la meilleure solution je sais pas, mais cela fonctionne.

    Merci de dire si c'est pas très bon.

  4. #4
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 155
    Par défaut
    Ca me semble bien aussi. En plus, ça fonctionne.
    Merci de "tagger" ta question comme "résolu"...

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

Discussions similaires

  1. [XL-97] Importation de données bancaires dans excel
    Par celtic29 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 17/08/2013, 11h09
  2. Import de données SQL dans une listbox à plusieurs colonnes
    Par Akabane12 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/04/2013, 14h58
  3. importé des données XML dans excel
    Par function_Help dans le forum Excel
    Réponses: 1
    Dernier message: 29/02/2012, 21h45
  4. Réponses: 1
    Dernier message: 05/06/2009, 17h54
  5. Import des données oracle dans excel
    Par irouni dans le forum Excel
    Réponses: 7
    Dernier message: 10/12/2007, 15h47

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