Bonjour,
Je souhaiterais développer le code vba ci-après qui inclu une requête sql.
J'importe dans xl des données venant de 2 tables dbf externe en les liant.
Tout fonctionne à merveille sauf que je voudrais importer les données suivant un critère supplémentaire que je n'arrive pas à coder.
Je souhaiterais que le champ "ligne.decr" (qui est un champ date dbase) soit filtré sur une période délimitée. Les bornes seraient stockées dans 2 cellules xl. (par exemple je voudrais tous les enregistrements dont la date du champ ligne.decr est comprise entre le 01/01/2006 et le 31/12/2006).
Je veux utiliser la commande WHERE mais en vain.
Quelqu'un peut-il m'aider ?
Je souhaiterais développer le code vba ci-après qui inclu une requête sql.
J'importe dans xl des données venant de 2 tables dbf externe en les liant.
Tout fonctionne à merveille sauf que je voudrais importer les données suivant un critère supplémentaire que je n'arrive pas à coder.
Je souhaiterais que le champ "ligne.decr" (qui est un champ date dbase) soit filtré sur une période délimitée. Les bornes seraient stockées dans 2 cellules xl. (par exemple je voudrais tous les enregistrements dont la date du champ ligne.decr est comprise entre le 01/01/2006 et le 31/12/2006).
Je veux utiliser la commande WHERE mais en vain.
Quelqu'un peut-il m'aider ?
Code:
Private Sub CommandButton1_Click()
'bouton d'importation pour le processus d'import du fichier comptes.dbf et appel de la procédure d'import de lign.dbf
Application.ScreenUpdating = False
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Chemin As String, Cible As String, comptes As String, lign As String, DATEDEB As String, DATEFIN As String
Dim Fld As ADODB.Field
Dim i As Integer
If ComboBox1.ListIndex = -1 Then Exit Sub
Chemin = "C:\evolution\" & ComboBox1.List(ComboBox1.ListIndex, 1)
comptes = "comptes.dbf"
lign = "lign.dbf"
DATEDEB = "#01/01/2006#"
DATEFIN = "#31/31/2006#"
'efface la feuille comptes
Sheets("Balance").Select
Selection.CurrentRegion.Select
Selection.ClearContents
Range("A1").Select
Set Cn = New ADODB.Connection
Cn.Open _
"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & _
Chemin & ";"
Cible = "SELECT comptes.COMP,comptes.INTI, sum(lign.DEBI-lign.CRED)AS MONTANT, comptes.NATU, lign.DECR " & " FROM lign INNER JOIN comptes ON comptes.COMP=lign.NUMC GROUP BY comptes.COMP, comptes.INTI, comptes.NATU, lign.DECR ORDER BY comptes.COMP"
Set Rs = New Recordset
Rs.Open Cible, Cn, adOpenKeyset, adLockOptimistic
For Each Fld In Rs.Fields
i = i + 1
Sheets("Balance").Cells(1, i) = Fld.Name
Next Fld
Do While Not Rs.EOF
Sheets("Balance").Range("A2").CopyFromRecordset Rs
Loop
Sheets("Balance").Select
Range("A1").Select
Rs.Close
Cn.Close
Application.ScreenUpdating = True
End Sub