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 :

VBA Excel 2010 - Requête SQL Noms de champs + données


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Avatar de ChipsAlaMenthe
    Homme Profil pro
    Ingénieur en eau chaude et ballon rond
    Inscrit en
    Mai 2015
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur en eau chaude et ballon rond
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 138
    Points : 394
    Points
    394
    Par défaut VBA Excel 2010 - Requête SQL Noms de champs + données
    Bonjour à tous!

    Voici mon problème: Sous Excel 2010, en VBA mon but est de pouvoir récupérer des données sur un serveur Microsoft SQL Server grâce à des requêtes SQL.
    Grâce à la doc Microsoft qui est très bien écrite pour certains points, j'ai pu réaliser une requête SQL assez rapidement grâce au code suivant:

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    '---------------------------------'
    '---CREATION DE LA CONNEXION---'
    '---------------------------------'
     
    ' Create a connection object.
    Dim cnPubs As ADODB.Connection
    Set cnPubs = New ADODB.Connection
     
    ' Provide the connection string.
    Dim strConn As String
     
    'Use the SQL Server OLE DB Provider.
    strConn = "PROVIDER=SQLOLEDB;"
     
    'Connect to the Pubs database on the local server.
    strConn = strConn & "DATA SOURCE=(local);INITIAL CATALOG=pubs;"
     
    'Use an integrated login.
    strConn = strConn & " INTEGRATED SECURITY=sspi;"
     
    'Now open the connection.
    cnPubs.Open strConn
     
     
    '----------------------------------'
    ' --- EXTRACTION DES DONNEES ---'
    '----------------------------------'
     
    ' Create a recordset object.
    Dim rsPubs As ADODB.Recordset
    Set rsPubs = New ADODB.Recordset
     
    With rsPubs
    	' Assign the Connection object.
    	.ActiveConnection = cnPubs
    	' Extract the required records.
    	.Open "SELECT * FROM Authors"
    	' Copy the records into cell A1 on Sheet1.
    	Sheet1.Range("A1").CopyFromRecordset rsPubs
     
    	' Tidy up
    	.Close
    End With
     
    cnPubs.Close
    Set rsPubs = Nothing
    Set cnPubs = Nothing
    Globalement, le code ci-dessus permet d'ouvrir une connexion sur le serveur, de récupérer les données grâce à la requête SQL et de les recopier dans une feuille excel (c'est un copié collé de la doc Windows).

    Maintenant voici mon problème: cette méthode fonctionne parfaitement récupérer les données, mais j'aimerais en plus de cela récupérer le nom des colonnes associés aux données et les avoir sur la ligne 1 de ma feuille excel. Si vous connaissez un moyen en VBA pour réaliser cela, je vous serait grandement reconnaissant! ^^

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    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 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Salut.

    Il y a plusieurs méthodes, mais l'une d'entre elles consiste à boucler sur les champs du recordset

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      Dim fld As ADODB.Field
      Dim Target As Range
     
      cn.open "..."
      set rs = cn.execute("select ...")
     
      Set Target = Range("a1")
      For Each fld In rs.Fields
        Target.Value = fld.Name
        Set Target = Target(1, 2)
      Next
    Voir l'excellent tuto de sylkyRoad sur le sujet...http://silkyroad.developpez.com/VBA/ClasseursFermes/

Discussions similaires

  1. [Excel 2007-2010]Requête SQL qui ne donne pas le bon résultat
    Par Davidw dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/10/2012, 11h48
  2. Requête SQL comportant un champ en deux mots ?
    Par bds2006 dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/06/2006, 11h41
  3. requête sur noms de champs
    Par irie dans le forum Access
    Réponses: 4
    Dernier message: 30/04/2006, 13h07
  4. Réponses: 1
    Dernier message: 23/12/2005, 00h18
  5. [import] Excel et ligne de noms des champs
    Par babar01 dans le forum Access
    Réponses: 2
    Dernier message: 05/10/2005, 15h46

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