Ok, disons que tu veux faire une requête à ton serveur SQL pour afficher le résultat d'une requete dans une cellule.
-Commence par créer une procedure en VBA
Public Sub Connection()
End Sub
- ensuite active la référence à Microsoft ActiveX Data Object 2.8 Library: dans l'éditeur VBA, Outils, Références et coche la bonne référence.
-Maintenant on peu se connecté à SQL Server avec ADO. Déclare les variables suivante:
'L'objet cnn servira de connexion avec le Serveur
Dim cnn As ADODB.Connection
'La chaine de connection au serveur
Dim connectionString As String
'L'objet rst contiendra le résultat de la requete
Dim rst As ADODB.Recordset
'Ta chaine SQL
Dim strSQL As String
-Ensuite on initialise les variables:
Set cnn = New ADODB.Connection
connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"
strSQL = "Select * FROM MaTable WHERE CodeClient = 1"
Dans la deuxième ligne tu dois remplacer les valeurs myServerAddress, myDataBase, MyUsername et myPassword.
- On établit ensuite la connexion et on affecte le résultat de la requete à l'objet rst.
cnn.Open connectionString
Set rst = cnn.Execute(strSQL)
-Maintenant que le résultat de la requète est dans l'objet rst, tu peux afficher les résultats de diverse façon, la plus facile est la suivante:
sheets("Feuil1").Range("A1").CopyFromRecordset rst
le résultat sera copié depuis la cellule A1 de la feuille 1.
- Un fois le traitement terminé, fait un peu de netoyage
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
en résumé ça donne ceci:
Public Sub Connection()
'Il faut activer la référence à Microsoft ActiveX Data Object 2.8 Library
'L'objet cnn servira de connexion avec le Serveur
Dim cnn As ADODB.Connection
'La chaine de connection au serveur
Dim connectionString As String
'L'objet rst contiendra le résultat de la requete
Dim rst As ADODB.Recordset
'Ta chaine SQL
Dim strSQL As String
Set cnn = New ADODB.Connection
connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"
strSQL = "Select * FROM MaTable WHERE CodeClient = 1"
cnn.Open connectionString
Set rst = cnn.Execute(strSQL)
sheets("Feuil1").Range("A1").CopyFromRecordset rst
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
End Sub
la chaine de connexion au serveur change selon la version de SQL SERVER que tu as.
Ce site liste des chaines de connexion pour les différentes versions.
www.connectionstrings.com
Hésite pas si tu as des questions.