XL 2010 [RESOLU] VBA créer une requête SQL sur SQL Server et récupérer résultat

richert90

XLDnaute Occasionnel
Bonjour à tous,

Je suis sur Excel et j'essaie de créer un code VBA permettant de créer une requête SQL qui sera "injectée" dans SQL Server. Puis, toujours dans mon programme VBA, on récupère le résultat de la requête SQL.

Voici le code que j'ai fait:

Code:
Public Sub connexion_SQL_server()

    Dim SQL_String As String

    Dim cN As ADODB.Connection
    Dim recset As ADODB.Recordset
    Set cN = New ADODB.Connection
    Set recset = New ADODB.Recordset

    cN.ConnectionString = "Provider=SQLOLEDB; Data Source=chbase; UID=id1;PWD=confi;"
    cN.Open ConnectionString
    
SQL_String = "SELECT  * FROM tableClient "


 recset.Open SQL_String, cN
    
    Dim total
    total = 0
    recset.MoveFirst
    While Not recset.EOF = True
     'N-1
     If recset.Fields(2) = 5983 Then
       MsgBox "ok"
     End If
     recset.MoveNext
    Wend

      recset.Close
End Sub

En exécutant ce code, j'ai le message d'erreur suivant "Erreur d'exécution '3704' Cette opération n'est pas autorisée si l'objet est fermé." J'ai cette erreur sur la ligne de code
Code:
recset.MoveFirst
. A quoi cela est due? Je n'arrive pas à trouver la réponse sur internet.

Merci d'avance de votre aide,
 
Dernière édition:

richert90

XLDnaute Occasionnel
Re : VBA créer une requête SQL sur SQL Server et récupérer résultat

Bonjour,

Merci pour l'aide.

SQL Server n'est pas en local du coup ça ne fonctionne pas. Je suis obligé de garder le "Provider=SQLOLEDB" (?)
La boucle à la fin c'était juste un test pour moi :)

Dans ma chaîne de connexion j'avais "Data Source=chbase" et vous avez mis "Database=chbase".Pourtant c'est bien différent data source et database?

La chose que je trouve bizarre dans mon code c'est que y a pas de bug sur le "RecSet.Open SQL_String, cN" mais sur le recset.movefirst. Est-ce que c'est pas un problème de recordset? Même si je pense plus comme vous que ça vient de la chaine de connexion.

Merci d'avance;