1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| Sub Import_Articles()
' EFFACAGE FEUILLE
Feuil16.Select
Feuil16.Range("A1:Z999").Clear
' CONSTRUCTION DE LA REQUETE
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Dim strSQL As String
Dim DateDevis As Date
' Attention : DateDevis doit être au format anglais ("mm/dd/yyyy") pour les requetes SQL
DateDevis = Format(Feuil7.Range("AE6").Value, "mm/dd/yyyy")
Set Db = DAO.OpenDatabase(ActiveWorkbook.Path & "\Database.mdb", False, False)
strSQL = "SELECT s3.[Code ], s3.[L1], s3.[L2], s3.[L3], s3.[Unité],s3.[Désignation], s3.[Libellé technique], " & _
"s1.[Date], s1.[Prix total]/s1.[Quantité] AS PU FROM [Achats] s1 LEFT JOIN [XLS Articles] s3 ON s1.[ID_article]=s3.[ID] " & _
"WHERE (Date=(SELECT MAX(s2.Date) FROM [Achats] s2 WHERE s1.ID_article=s2.ID_article AND s2.Date<=#" & DateDevis & "#)) ORDER BY Code ASC"
Set Rs = Db.OpenRecordset(strSQL, DAO.dbOpenSnapshot)
' RECUPERATION DES ENTETES
Dim i As Integer
Dim Cellule As Range
Set Cellule = Range("a1")
For i = 0 To Rs.Fields.Count - 1
Cellule = Rs.Fields(i).Name
Set Cellule = Cellule(1, 2)
Next i
' AFFICHAGE DES RESULTATS
Feuil16.Range("A2").CopyFromRecordset Rs
Db.Close
End Sub |