Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
782 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment extraire des données de SQL Server via Excel Vba????

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment extraire des données de SQL Server via Excel Vba????

n°1106841
anissa9215​0
Posté le 03-06-2005 à 12:56:57  profilanswer
 

salut
 
je débute dans le monde informatique et je voulais savoir si on pouvait à partir d'Excel extraire des données de ma base de données qui est sous SQL server 2000??? Comme il s'agit de 2 produits Microsoft je me demandais s'il n'existait pas de liens directs. Je voudrais en effet afficher les résultats de mes requêtes sous Excel ms sans passer par l'analyseur de requêtes, est il donc possible d'attaquer la base de données via Excel????
 
Merci d'avance pour les réponses!!!!

 

mood
Publicité
Posté le 03-06-2005 à 12:56:57  profilanswer
 

n°1373134
darki666
Posté le 23-05-2006 à 13:49:58  profilanswer
 

c'est possible vu que c'est ce que j'ai a faire pour mon stage mais je suis désolé je suis dans a même galère :lol:  
bonne chance

n°1373419
kiki29
Posté le 23-05-2006 à 17:54:05  profilanswer
 

http://support.microsoft.com/kb/q246335/
http://support.microsoft.com/kb/q257819/
http://support.microsoft.com/kb/q244761/
http://www.exceltip.com/st/Import_ [...] l/427.html
http://drq.developpez.com/vb/tutoriels/ADO/
http://www.informit.com/guides/con [...] m=135&rl=1
voir aussi l'aide en ligne VBA
    Taper SQL dans Aide Intuitive et Index
       il y a des portions de code à adapter
 
http://www.vb-helper.com/AdoTalk/AdoTalk.zip
C'est du VB6 mais "aisément" transposable en VBA


Message édité par kiki29 le 24-05-2006 à 01:55:46
n°1373721
darki666
Posté le 24-05-2006 à 08:23:06  profilanswer
 

merci pour tous ces site.
j'ai vu aussi quelques articles interessants sur le site vbfrance
 
@++

n°1373994
kiki29
Posté le 24-05-2006 à 12:16:32  profilanswer
 

un exemple,n'ayant pas de SQL Server la chaine de connexion sera à trouver sinon ça marche
 voir http://forum.hardware.fr/hardwaref [...] 0668-1.htm pour un SELECT


Message édité par kiki29 le 24-05-2006 à 21:49:32
n°1374023
kiki29
Posté le 24-05-2006 à 12:42:07  profilanswer
 

un peu mieux
 
Option Explicit
 
'Cocher Outils References ActiveX Data Objects x.x Object Library.
 
Public Sub ADOImportTableAccess(FichierBaseAccess As String, NomTable As String, Cible As Range)
Dim Connexion As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim i As Integer
Dim Requete As String
                 
    Set Connexion = New ADODB.Connection
    Connexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & FichierBaseAccess & ";"
     
    Set Rs = New ADODB.Recordset
     
    Requete = "SELECT NOM, PRENOM, AILE, CHAMBRE, UNITE FROM " & NomTable & " WHERE (PRESENT = -1) AND (DISPONIBLE = 0) ORDER BY UNITE ASC,NOM ASC"
 
    With Rs
        .CursorLocation = adUseClient
        .Open Requete, Connexion, adOpenDynamic, adLockOptimistic
 
        For i = 0 To Rs.Fields.Count - 1
            Cible.Offset(0, i).Value = Rs.Fields(i).Name
        Next
        Cible.Offset(1, 0).CopyFromRecordset Rs
    End With
     
    Rs.Close
    Set Rs = Nothing
     
    Connexion.Close
    Set Connexion = Nothing
End Sub
 
Sub Bouton1_QuandClic()
Dim Chemin As String
Dim NomTable As String
Dim Cible As Range
 
    Application.ScreenUpdating = False
        Cells.Clear
         
        Chemin = ThisWorkbook.Path & "\Cpasan.mdb"
        NomTable = "CPASAN"
        Set Cible = Cells(1, 1)
         
        ADOImportTableAccess Chemin, NomTable, Cible
         
        Cells.Select
        With Selection
            .HorizontalAlignment = xlGeneral
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        Range("A1" ).Select
    Application.ScreenUpdating = True
End Sub


Message édité par kiki29 le 24-05-2006 à 12:45:25
n°1374148
kiki29
Posté le 24-05-2006 à 14:31:10  profilanswer
 

Pour les chaines de connexions voir http://www.carlprothman.net/Default.aspx?tabid=81

n°1374624
kiki29
Posté le 24-05-2006 à 21:48:33  profilanswer
 

voir http://forum.hardware.fr/hardwaref [...] 0668-1.htm pour un INSERT toujours malheureusement sans SQl Server

n°1376426
darki666
Posté le 29-05-2006 à 08:51:49  profilanswer
 

si cela peut t'aider j'ai une connection vba vers une base access :  
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 24/05/2006 par cyril
'
' Touche de raccourci du clavier: Ctrl+a
 
Dim objConn, objRS
Dim source, table, chemin, BD, fichier, m As String
Dim k, j, lig As Integer
Dim champ, nb_champ, adOpenKeyset
Dim n As Integer
 
Worksheets("feuil1" ).Select
 
'chemin d'acces BD
chemin = "C:\Documents and Settings\gestion1\Bureau\"
'nom de la base access
fichier = Range("b1" ).Value
 
BD = fichier & ".mdb"
 
 
source = chemin & BD
 
'connection avec la BD
Set objConn = CreateObject("adodb.connection" )
 
'pointer sur l'enregistrementcomplet d'une table
Set objRS = CreateObject("adodb.recordset" )
 
'ouvrir connection avec access
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & source
 
'table à traiter
table = Range("b2" ).Value
 
 
 
'ouvrir la table sur l'enr n°1:
 
objRS.Open UCase(table), objConn
 
 
Worksheets.Add
 
 
n = 2
 
While Worksheets("feuil" & n).Range("A1" ) <> ""
 
n = n + 1
 
Wend
'________________________________________________________________________________
'ecriture des nom des champs ds les cellules a1,b1,...
 
 
Worksheets("feuil" & n).Select
 
k = 1
 
For Each champ In objRS.fields
 
Cells(1, k) = champ.Name
k = k + 1
 
Next
 
nb_champ = objRS.fields.Count
 
'_________________________________________________________________________________
'ecriture des enregistrements
 
'numero de la ligne qui reçoit le premiere enreg.
lig = 2
 
'TQ non fdf
While Not objRS.EOF
 
 
 j = 0
 
 For Each champ In objRS.fields
  Cells(lig, 1 + j) = champ
  j = j + 1
Next champ
lig = lig + 1
 
'enreg. suivant :
objRS.MoveNext
Wend
 
'fermeture de la connection
objRS.Close
objConn.Close
 
'liberé les ressources
Set objRS = Nothing
Set objConn = Nothing
 
end Sub
 
 
voila c'est tous ce que je peut faire.
 
bonne chance
@+
 
 
PS : merci KIKI29 pour ton aide.

n°1377916
darki666
Posté le 31-05-2006 à 09:07:11  profilanswer
 

sa y'est j'ai réussi a me connecter je te donne mon code de connection :  
Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim fld As ADODB.Field
 
Set conn = New ADODB.Connection
With conn
    .Provider = "SQLOLEDB.1;user ID=nomutilisateur;initial Catalog=nomdetabase;data source=nomdetasource"
    .Open
End With
 
avant cela il faut juste aller dans l'editeur de macro: outil/references et tu active microsoft activeX data object recordset 2.7 library
 
voili voilou
 
bonne chance et que la force soit avec toi :lol:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment extraire des données de SQL Server via Excel Vba????

 

Sujets relatifs
lire et extraire donnée d'un fichier sylkPlateforme Win32 et très forte charge : SQL Server ou Oracle
Statistiques sur une base de donnéesPbme Macro VBA Excel avec Format Nombre limité
Pbme Macro VBA Excel avec Format Nombre limitéTag, données d'un fichiers audio
[Débutant php/sql] Trier les données 
Plus de sujets relatifs à : Comment extraire des données de SQL Server via Excel Vba????


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR