requete sql sous vba excel

creal69360

XLDnaute Junior
Bonjour à tous,

je souhaiterai récupérer des donées excel selon différents critères ( date min et date max et unite ). on saisi ces critèrs dans un userform et j'utilise ensuite ce code pour faire la requete qui va me copier les données trouvées dans une nouvelle feuille:
Public Sub analyse_unite2(ByVal unite As String, ByVal datemin As Date, ByVal datemax As Date)
Dim Lig As Long
Dim Colunite As String
Dim NbrLig As Long
Dim NumLig As Long
Dim coldate As String

Sheets("analyse_unite").Activate ' feuille de destination
coldate = "x"
Colunite = "r" ' colonne de la donnée non vide à tester
NumLig = 1
With Sheets("BDD") ' feuille source
NbrLig = .Cells(65536, Colunite).End(xlUp).Row
For Lig = 1 To NbrLig
If .Cells(Lig, Colunite).Value = unite Then
If .Cells(Lig, coldate).Value >= datemin Then
If .Cells(Lig, coldate).Value <= datemax Then
.Cells(Lig, Colunite).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig, 1).Select
ActiveSheet.Paste
End If
End If
End If

Next
End With
End Sub

unite datemin et datemax proviennent de mon userform.
Ce code fonctionne très bien sauf qu'il est longt ( il faut copier à des momments 5000 lignes) , c'est pourquoi je voudrais utiliser un recordset sauf que j'arrive pas à gérer le code sql sous vba excel:
Public Sub test_recup_données(ByVal unite As String, ByVal datemin As Date, ByVal datemax As Date)
Dim cncode As ADODB.Connection
Dim rstcode As ADODB.Recordset
Dim fichiercode As String
Dim sqlanalyse As String

fichiercode = "C:\Mathieu\code final.xlsm"
Set cncode = New ADODB.Connection
cncode.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & fichiercode & ";Extended Properties=Excel 8.0;"

sqlanalyse = "select* from [analyse_unite$] where [( libellé us =unite ) and ( datemin < date messa > datemax )]"
Set rstcode = New ADODB.Recordset
rstcode.CursorLocation = adUseClient
rstcode.Open sqlanalyse, cncode, adOpenForwardOnly, adLockReadOnly, adCmdText
Sheets("analyse_unite").Select
Range("A2").CopyFromRecordset rstcode


Set cncode = Nothing
cncode.Close


End Sub
il doit y avoir une erreur de syntaxe dans ma requete sql mais je vois pas laquelle, merci de m'aider.
 

Caillou

XLDnaute Impliqué
Re : requete sql sous vba excel

Bonjour,

En effet, il manque un espace entre le SELECT et * et il y a une double comparaison :
Il faudrait mettre quelque chose comme :
sqlanalyse = "select * from [analyse_unite$] where [libellé us] = unite AND ( datemin < [date messa] AND [date messa]> datemax )]"

Caillou
 

Discussions similaires

Réponses
28
Affichages
920
Réponses
6
Affichages
202