Requète sur date en VBA

akibodo

XLDnaute Junior
Bonjour à tous,

Je cherche à effectuer une requète à partir de VBA en utilisant du SQL.

Ma requète est de forme SELECT ... FROM ... WHERE DATETRUC = .....

Et mon problème se situe ici, je cherche à faire passer la date en variable récupérer soit par un userform soit sur une feuille d'excel.

Quand je met une date fixe sous la forme : {d '2008-11-01'} ça fonctionne mais je n'arrive pas à la passée en variable.

J'ai essayé différente chose comme : '" & var & "' ou " & var & " etc ... mais je ne trouve pas.

Peu etre un problème de format de date ... j'ai plus d'idée.

Merci pour vos réponses.
 

MichelXld

XLDnaute Barbatruc
Re : Requète sur date en VBA

bonsoir

Tu peux essayer :

Code:
Dim varDate As Date
varDate = CDate("01/11/2008")
sqlTexte = "SELECT * FROM Table1 WHERE ChampDate = #" & varDate & "#"

Code:
Dim varDate As Date
varDate = CDate("11/01/2008")
sqlTexte = "SELECT * FROM Table1 WHERE ChampDate = #" & varDate & "#"

bonne soirée
michel
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Requète sur date en VBA

Bonsoir,

Il faut inverser le jour et le mois de la date et la placer en # #.

Code:
Sub LectureAccess()
  'Microsoft ActivexDataObject 2.8 Library
  repertoire = ThisWorkbook.Path & "\"
  Dim rs As ADODB.Recordset
  Set cnn = New ADODB.Connection
  cnn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & repertoire & "Access2000.mdb"
  Sql = "SELECT * FROM Client where dateNaiss=" & ConvDate([A1])  ' date en A1
  MsgBox Sql
  Set rs = cnn.Execute(Sql)  
  Range("A2").CopyFromRecordset rs
  rs.Close
  cnn.Close
  Set rs = Nothing
  Set cnn = Nothing
End Sub

Function ConvDate(MaDate As Date) As String
  ConvDate = "#" & Month(MaDate) & "/" & Day(MaDate) & "/" & Year(MaDate) & "#"
End Function


Autre exemple:

Code:
Sub essaiDate()
    'cocher Microsoft DAO 3.6 dans Outils/Références
    Dim début As Date, fin As Date
    Dim bd As Database
    Dim rs As Recordset
    Set bd = OpenDatabase(ActiveWorkbook.Path & "\access2000.mdb")
    début = #5/21/1970#
    fin = #6/21/1970#
    Sql = "Select * From Client Where dateNaiss>=" & ConvDate(début) & " AND dateNaiss<=" & ConvDate(fin)
    Set rs = bd.OpenRecordset(Sql)
    i = 2
    Do While Not rs.EOF
        Cells(i, 1) = rs!Nom_Client
        Cells(i, 2) = rs!Ville
        Cells(i, 3) = rs!Salaire
        Cells(i, 4) = rs!datenaiss
        rs.MoveNext
        i = i + 1
    Loop
End Sub

Function ConvDate(MaDate As Date) As String
  ConvDate = "#" & Month(MaDate) & "/" & Day(MaDate) & "/" & Year(MaDate) & "#"
End Function

JB

Formation Excel VBA JB
 
Dernière édition:

akibodo

XLDnaute Junior
Re : Requète sur date en VBA

Re,

Merci pour vos réponses, malheureusement je pense que le fais d'avoir homis de préciser que j'utiliser un driver ODBC n'as pas permis d'apporter la solution (se driver utilise les date au format texte, y a un truc dans le genre ...).

Après plusieurs recherche sur le site et autre j'ai trouvé un truc qui marche :

Je passe par une cellule pour me servir de la date du genre :

Code:
Sheets("Feuil1").Cells(2, 2).Value = TextBox1.Value

Chose importante (c'est là que je ne trouvé pas la solution) je met la cellule au format texte et non date !

Ensuite de place la valeur de ma cellule dans une variable que je réutilise dans la requète :

Code:
vardate = Sheets("Feuil1").Cells(2, 2).Value
SELECT ... FROM ... WHERE ... TRUC_DATE={d '" & vardate & "'}
et là ça fonction.

Y a sûrement plus simple , c'est beaucoup pour pas grand chose mais bon si ça peu aider d'autre et leur éviter de passé une journée à chercher se sera écrit ici :)

Merci Le Forum Excel Downloads
 

Discussions similaires

Réponses
8
Affichages
154

Statistiques des forums

Discussions
312 506
Messages
2 089 111
Membres
104 037
dernier inscrit
damsau