creal69360
XLDnaute Junior
Bonjour,
J'ai crée une Recordset afin de récupérer d'une grosse base des données selon certains critères (saisis dans un userform) que je rajoute à la clause where. Jusque là aucun problème, ma requête fonctionne très bien et me récupère les bonnes données.
J'ai cependant un soucis au niveau des dates, en effet un grand nombre de colonnes contiennent des dates (elles peuvent aussi contenir du texte). Le soucis est que lorque j'exécute ma recordset, les dates sont transformées en integer au format standard donc changer le format avec .numberformat n'a aucun impact (mes données ne sont plus considérées comme des données numériques). Je voudrais donc savoir si il existe une solution pour avoir des dates à la place de nombres. Voici ci-dessous mon code pour exécuter la recordset (Utilisable uniquement sous Excel 2007):
sub recup()
Dim cn, cn1 As ADODB.Connection
Dim rst, rst1 As ADODB.Recordset
Dim texte_SQL As String
Dim where as string
where = where & "[Manager]='" & filtre.zl_manager_projet & "'"
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & chemin_base & ";Extended Properties=Excel 8.0;"
texte_SQL = "Select * from [" & onglet_source & "$] " & where
Set rst = New ADODB.Recordset
Set rst = cn.Execute(texte_SQL)
ThisWorkbook.Sheets(onglet_dest).Cells.ClearContents
For i = 0 To rst.Fields.Count - 1
ThisWorkbook.Sheets(onglet_dest).Cells(4, i + 1) = rst.Fields(i).Name
Next i
ThisWorkbook.Sheets(onglet_dest).Range("a5").CopyFromRecordset rst
rst.Close
Set rst = Nothing
cn.Close
Set cn = Nothing
end sub
J'ai crée une Recordset afin de récupérer d'une grosse base des données selon certains critères (saisis dans un userform) que je rajoute à la clause where. Jusque là aucun problème, ma requête fonctionne très bien et me récupère les bonnes données.
J'ai cependant un soucis au niveau des dates, en effet un grand nombre de colonnes contiennent des dates (elles peuvent aussi contenir du texte). Le soucis est que lorque j'exécute ma recordset, les dates sont transformées en integer au format standard donc changer le format avec .numberformat n'a aucun impact (mes données ne sont plus considérées comme des données numériques). Je voudrais donc savoir si il existe une solution pour avoir des dates à la place de nombres. Voici ci-dessous mon code pour exécuter la recordset (Utilisable uniquement sous Excel 2007):
sub recup()
Dim cn, cn1 As ADODB.Connection
Dim rst, rst1 As ADODB.Recordset
Dim texte_SQL As String
Dim where as string
where = where & "[Manager]='" & filtre.zl_manager_projet & "'"
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & chemin_base & ";Extended Properties=Excel 8.0;"
texte_SQL = "Select * from [" & onglet_source & "$] " & where
Set rst = New ADODB.Recordset
Set rst = cn.Execute(texte_SQL)
ThisWorkbook.Sheets(onglet_dest).Cells.ClearContents
For i = 0 To rst.Fields.Count - 1
ThisWorkbook.Sheets(onglet_dest).Cells(4, i + 1) = rst.Fields(i).Name
Next i
ThisWorkbook.Sheets(onglet_dest).Range("a5").CopyFromRecordset rst
rst.Close
Set rst = Nothing
cn.Close
Set cn = Nothing
end sub