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

cs_anissa92 Messages postés 4 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 2 juin 2005 - 2 juin 2005 à 11:53
cs_anissa92 Messages postés 4 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 2 juin 2005 - 3 juin 2005 à 12:40
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!!!!

2 réponses

dp_favresa Messages postés 132 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 11 mai 2010
3 juin 2005 à 11:28
Bonjour,



Cela ce fait très bien, l'exemple de macro ci-dessous vous le montrera.

Le processus est : saisie d'une date dans un formulaire, connexion à la base

et création d'un recordset selon requête, copie du recordset dans Excel,

mise à jour du flag "déjà extrait".

Private Sub CommandButton1_Click()



' ***** DEMANDE L'ACTIVATION DU COMPOSANT MICROSOFT ACTIVEX DATA OBJECT 2.7 LIBRARY

' ***** DEPUIS MENU "OUTILS" - "RÉFÉRENCES"



Dim Cnx As New ADODB.Connection

Dim Rst As New ADODB.Recordset

Dim Année As String * 4

Dim Mois As String * 2

Dim Jour As String * 2

Dim AMJ As String * 8

Dim ValC1 As String * 8

Dim ValC2 As String * 10

Dim Req1 As String

Dim Req2 As String

Dim Compt As Integer

Dim ExtA As String * 4

Dim ExtM As String * 2

Dim ExtJ As String * 2

Année = TextBox1

Mois = TextBox2

Jour = TextBox3

AMJ = Année & Mois & Jour



' ***** INSTRUCTIONS DE SÉLECTION DES CHAMPS ET DE JOINTURE *****

Req1 = "select d.inputdate, cu.inv_name, c.sit_name, d.dwgbbsnum, d.dwgtitle,"

Req1 = Req1 & "d.bbsweight, d.delivstart from dwgbbs as d "

Req1 Req1 & "join contract as c on c.esrc_file d.esrc_file and c.rc_num = d.rc_num "

Req1 Req1 & "join customer as cu on cu.cust_code c.cust_code"



' ***** SÉLECTION SELON DATE SAISIE DANS LE FORMULAIRE *****

Req2 "where d.esrc_file 'cht05' and d.rc_num
<> 5 and d.excel_planning is null and d.inputdate = " & AMJ

Req1 = Req1 & " " & Req2



' ***** OUVERTURE DE LA BASE *****

Cnx.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=Favre;Data Source=Serveur-corc"



' ***** RECHERCHE DE LA DERNIÈRE CELLULE NON VIDE *****

Range("A10000").Select

Selection.End(xlUp).Select



' ***** OUVERTURE DU RECORDSET *****

Rst.Open Req1, Cnx, adOpenKeyset



' ***** COPIE DU RECORDSET DEPUIS LA LIGNE SUIVANTE *****

ActiveCell.Offset(1, 0).CopyFromRecordset Rst



' ***** MISE A JOUR DU FLAG *****

Req2 "update dwgbbs set excel_planning 1"

Req2 Req2 & "where esrc_file 'cht05' and rc_num <> 5 and inputdate = " & AMJ

Cnx.Execute Req2, adExecuteNoRecords



' ***** FERMETURE ET VIDAGE *****

Rst.Close: Set Rst = Nothing

Cnx.Close: Set Cnx = Nothing

Unload UserForm3



' ***** FORMATAGE DES CELLULES DATE *****

Compt = 1

Do Until ActiveCell.Offset(Compt, 0) <> AMJ

ValC2 = Jour & "," & Mois & "," & Année

ActiveCell.Offset(Compt, 0).Value = ValC2

ValC1 = ActiveCell.Offset(Compt, 6).Value

ExtA = Left(ValC1, 4)

ExtM = Right(ValC1, 4)

ExtJ = Right(ValC1, 2)

ValC2 = ExtJ & "," & ExtM & "," & ExtA

ActiveCell.Offset(Compt, 6).Value = ValC2

Compt = Compt + 1

Loop



Application.ScreenUpdating = True

End Sub





Bon(nes) courage, développement, salutations...
(choisissez ce qui vous convient) dp
0
cs_anissa92 Messages postés 4 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 2 juin 2005
3 juin 2005 à 12:40
Merci d'avoir répondu et de t'être intéressé à mon sujet!!! je vais essayer et je vous tiendrai au courant!

Salutations!!!
0
Rejoignez-nous