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

Comment extraire des données de SQL Server via Excel Vba???? - VB/VBA/VBS - Programmation

Marsh Posté le 03-06-2005 à 12:56:57    

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!!!!

 

Reply

Marsh Posté le 03-06-2005 à 12:56:57   

Reply

Marsh Posté le 23-05-2006 à 13:49:58    

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

Reply

Marsh Posté le 23-05-2006 à 17:54:05    

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
Reply

Marsh Posté le 24-05-2006 à 08:23:06    

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

Reply

Marsh Posté le 24-05-2006 à 12:16:32    

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
Reply

Marsh Posté le 24-05-2006 à 12:42:07    

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
Reply

Marsh Posté le 24-05-2006 à 14:31:10    

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

Reply

Marsh Posté le 24-05-2006 à 21:48:33    

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

Reply

Marsh Posté le 29-05-2006 à 08:51:49    

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.

Reply

Marsh Posté le 31-05-2006 à 09:07:11    

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:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed