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.
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.