Requête SQL dans un autre fichier excel

cs_Amesainte Messages postés 3 Date d'inscription mardi 12 octobre 2010 Statut Membre Dernière intervention 9 novembre 2010 - 12 oct. 2010 à 23:26
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 13 oct. 2010 à 08:50
Bonjour,

Mon problème est le suivant, je souhaite effectuer une requête SQL avec une clause WHERE dans un fichier Excel. Cependant, la table est une range dans le fichier Excel source (A6:C17)
J'arrive à faire un select * from mais dès qu'une CLAUSE WHERE est ajouté, j'obtiens l'erreur suivante :

no value given for one or more parameters

Voici mon code :
(Je précise que celui fonctionne dès qu'on enlève la CLAUSE WHERE)

Sub RequeteClasseurFerme_book()
Dim Source As ADODB.Connection
Dim Rst As ADODB.Recordset
Dim ADOCommand As ADODB.Command
Dim Fichier As String, Cellule As String, Feuille As String


'Définit le classeur fermé servant de base de données
Fichier = "C:\test\Book4.xls"
'Nom de la feuille dans le classeur fermé
Feuille = "Sheet2$"
Cellule = "A6:C17"

Set Source = New ADODB.Connection
Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=Yes;"";"

Set ADOCommand = New ADODB.Command
With ADOCommand
.ActiveConnection = Source
.CommandText = "SELECT * FROM [" & Feuille & Cellule & "] WHERE Col1='A6'"
End With

Set Rst = New ADODB.Recordset
Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic

Set Rst = Source.Execute("SELECT * FROM [" & Feuille & Cellule & "]")

Sheets("Data").Select
Range("A2").CopyFromRecordset Rst

Rst.Close
Source.Close
Set Source = Nothing
Set Rst = Nothing
Set ADOCommand = Nothing
End Sub

Merci de votre aide. C'est peut être pas grand chose mais je ne m'en sors pas. Merci de me sauver la vie :)

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 oct. 2010 à 08:50
Salut

"Sub RequeteClasseurFerme_book" alors que tu ouvres un classeur n'est pas très bien choisi ! (si "ferme" veut dire "fermer")

WHERE Col1='A6'"
Est-ce que l'une de tes colonnes s'appelle "Col1" ?
Est-ce que une des cellules de cette colonne contient le texte "A6" (et seulement ce texte) ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rejoignez-nous